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代码
Jul 01 Javascript
JavaScript 权威指南(第四版) 读书笔记
Aug 11 Javascript
在html页面上拖放移动标签
Jan 08 Javascript
详细介绍8款超实用JavaScript框架
Oct 25 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
js漂浮广告实现代码
Aug 15 Javascript
jQuery对象的链式操作用法分析
May 10 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
May 21 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
Jun 21 Javascript
vue-cli监听组件加载完成的方法
Sep 07 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实现文章评论系统
2019/02/18 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
详解Vue之事件处理
2020/07/10 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python subprocess库的使用详解
2018/10/26 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
python实现静态服务器
2019/09/05 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
北京导游词
2015/02/12 职场文书
大学生年度个人总结
2015/02/15 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
保险公司增员口号
2015/12/25 职场文书
关于保护环境的建议书
2019/06/24 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python