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 相关文章推荐
JavaScript中两种链式调用实现代码
Jan 12 Javascript
Safari5中alert的无限循环BUG
Apr 07 Javascript
Javascript setInterval的两种调用方法(实例讲解)
Nov 29 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
May 19 Javascript
Bootstrap创建可折叠的组件
Feb 23 Javascript
jQuery中DOM节点的删除方法总结(超全面)
Jan 22 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
微信小程序实现折叠面板
Jan 31 Javascript
关于layui导航栏不展示下拉列表的解决方法
Sep 25 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 04 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
15种PHP Encoder的比较
2007/03/06 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
EXT中xtype的含义分析
2010/01/07 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
业务代表的岗位职责
2013/11/16 职场文书
护士个人自我鉴定
2014/03/24 职场文书
股权转让协议书范本
2014/04/12 职场文书
博士生导师推荐信
2014/07/08 职场文书
重点工程汇报材料
2014/08/27 职场文书
个人催款函范文
2015/06/23 职场文书
2019广播稿怎么写
2019/04/17 职场文书
800字作文之大雪
2019/12/04 职场文书