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 获取URL参数并进行转码
Aug 18 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
Jun 04 Javascript
自定义事件解决重复请求BUG的问题
Jul 11 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
Node.js文件编码格式的转换的方法
Apr 27 Javascript
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 jQuery
详解Vue源码中一些util函数
Apr 24 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
Jul 10 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 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模板类代码
2008/09/07 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
常用的javascript function代码
2008/05/23 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
详解nodejs http请求相关总结
2019/03/31 NodeJs
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
python ip正则式
2009/05/07 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
查询优化的一般准则有哪些
2015/03/08 面试题
英语教师岗位职责
2014/03/16 职场文书
个人函授自我鉴定
2014/03/25 职场文书
年会主持词结束语
2014/03/27 职场文书
新闻学专业求职信
2014/07/28 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书