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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
JS getStyle获取最终样式函数代码
Apr 01 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
appendChild() 或 insertBefore()使用与区别介绍
Oct 11 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
Aug 26 Javascript
js中创建对象的几种方式
Feb 05 Javascript
详解如何使用Vue2做服务端渲染
Mar 29 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
vue中的计算属性的使用和vue实例的方法示例
Dec 04 Javascript
react配置antd按需加载的使用
Feb 11 Javascript
微信小程序常用赋值方法小结
Apr 30 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实现全角字符转为半角方法汇总
2015/07/09 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
Python实现的下载网页源码功能示例
2017/06/13 Python
django模板结构优化的方法
2019/02/28 Python
值得收藏的10道python 面试题
2019/04/15 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
python类中super() 的使用解析
2019/12/19 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
办公室文书岗位职责
2013/12/16 职场文书
励志演讲稿200字
2014/08/21 职场文书
离职报告范文
2014/11/04 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
《颐和园》教学反思
2016/02/19 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
MySQL添加索引特点及优化问题
2022/07/23 MySQL