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 相关文章推荐
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
Javascript 面向对象 重载
May 13 Javascript
使用js+jquery实现无限极联动
May 23 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
Vue.js学习笔记之 helloworld
Aug 14 Javascript
原生js验证简洁注册登录页面
Dec 17 Javascript
Angular4编程之表单响应功能示例
Dec 13 Javascript
vue使用v-for实现hover点击效果
Sep 29 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
vue实现信息管理系统
May 30 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 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
分享一个Laravel好用的Cache宏
2015/03/02 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
Python 中的 else详解
2016/04/23 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Django如何自定义分页
2018/09/25 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
求职信格式范本
2013/11/15 职场文书
大学毕业生的自我鉴定
2013/11/30 职场文书
银行实习生的自我评价
2014/01/13 职场文书
创先争优制度
2014/01/21 职场文书
幼儿生日活动方案
2014/08/27 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
对象析构函数__del__在Python中何时使用
2022/03/22 Python