JS实现的文件拖拽上传功能示例


Posted in Javascript onMay 21, 2018

本文实例讲述了JS实现的文件拖拽上传功能。分享给大家供大家参考,具体如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>3water.com JS文件拖拽上传</title>
<style>
div{
 width: 300px;
 height: 300px;
 border:1px dashed #000;
 position:absolute;
 top: 50%;
 left: 50%;
 margin:-150px 0 0 -150px;
 text-align:center;
 font:20px/300px '微软雅黑';
 display:none;
}
</style>
<script>
 window.onload = function () {
  var oBox = document.getElementById('box');
  var oM = document.getElementById('m1');
  var timer = null;
  document.ondragover = function(){
   clearTimeout(timer);
   timer = setTimeout(function(){
    oBox.style.display = 'none';
   },200);
   oBox.style.display = 'block';
  };
  //进入子集的时候 会触发ondragover 频繁触发 不给ondrop机会
  oBox.ondragenter = function(){
   oBox.innerHTML = '请释放鼠标';
  };
  oBox.ondragover = function(){
   return false;
  };
  oBox.ondragleave = function(){
   oBox.innerHTML = '请将文件拖拽到此区域';
  };
  oBox.ondrop = function(ev){
   var oFile = ev.dataTransfer.files[0];
   var reader = new FileReader();
   //读取成功
   reader.onload = function(){
    console.log(reader);
   };
   reader.onloadstart = function(){
    alert('读取开始');
   };
   reader.onloadend = function(){
    alert('读取结束');
   };
   reader.onabort = function(){
    alert('中断');
   };
   reader.onerror = function(){
    alert('读取失败');
   };
   reader.onprogress = function(ev){
    var scale = ev.loaded/ev.total;
    if(scale>=0.5){
     alert(1);
     reader.abort();
    }
    oM.value = scale*100;
   };
   reader.readAsDataURL(oFile,'base64');
   return false;
  };
 };
</script>
</head>
<body>
<meter id="m1" value="0" min="0" max="100"></meter>
 <div id="box">请将文件拖拽到此区域</div>
</body>
</html>

使用http://tools.3water.com/code/HtmlJsRun在线运行测试效果如下:

JS实现的文件拖拽上传功能示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Jquery 基础学习笔记
May 29 Javascript
HTML DOM的nodeType值介绍
Mar 31 Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 Javascript
Bootstrap每天必学之滚动监听
Mar 16 Javascript
Json解析的方法小结
Jun 22 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
以v-model与promise两种方式实现vue弹窗组件
May 21 #Javascript
Vue二次封装axios为插件使用详解
May 21 #Javascript
详解vue的diff算法原理
May 20 #Javascript
详解使用vue-admin-template的优化历程
May 20 #Javascript
vuex进阶知识点巩固
May 20 #Javascript
简单的三步vuex入门
May 20 #Javascript
vue项目如何刷新当前页面的方法
May 18 #Javascript
You might like
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
js 操作css实现代码
2009/06/11 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
关于js datetime的那点事
2011/11/15 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
德国网上药房:Apotal
2017/04/04 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
一些.net面试题
2014/10/06 面试题
电脑销售顾问自荐信
2014/01/29 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
围城读书笔记
2015/06/26 职场文书
初中运动会前导词
2015/07/20 职场文书
详解JAVA的控制语句
2021/11/11 Java/Android
Pandas-DataFrame知识点汇总
2022/03/16 Python
Python保存并浏览用户的历史记录
2022/04/29 Python