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 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
深入分析javascript中console命令
Aug 14 Javascript
js注入 黑客之路必备!
Sep 14 Javascript
domReady的实现案例
Nov 23 Javascript
详解vue.js的devtools安装
May 26 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
Mar 13 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
jQuery表单校验插件validator使用方法详解
Feb 18 jQuery
记一次vue跨域的解决
Oct 21 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设计模式 FlyWeight (享元模式)
2011/06/26 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
JS面向对象编程详解
2016/03/06 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
python逐行读写txt文件的实例讲解
2018/04/03 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python对日志进行处理的实例代码
2018/10/06 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
学习两会精神心得范文
2014/03/17 职场文书
争先创优心得体会
2014/09/12 职场文书
员工辞职信范文
2015/03/02 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL