HTML5 js实现拖拉上传文件功能


Posted in Javascript onNovember 20, 2020

在HTML5的pc上面实现了相当多的功能,工作中也用到了拖拉上传,特地记录下该功能

在拖动目标上触发事件 (源元素):

ondragstart - 用户开始拖动元素时触发
ondrag - 元素正在拖动时触发
ondragend - 用户完成元素拖动后触发

释放目标时触发的事件:

ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件
ondragover - 当某被拖动的对象在另一对象容器范围内拖动时触发此事件
ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件
ondrop - 在一个拖动过程中,释放鼠标键时触发此事件

上代码

<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>拖拽</title>
 <style>
  .box{width:800px;height:600px;float:left;}
  #box1{background-color:#ccc;}
  #box2{background-color:#000;}
 </style>
</head>
<body>
 <div id="box1" class="box"></div>
 <div id="box2" class="box"></div>
 <img id="img1" src="1.jpg">
 <div id="msg"></div>
</body>
<script>
var box1Div,box2Div,msgDiv,img1; 
window.onload = function(){
 box1Div = document.getElementById('box1');
 box2Div = document.getElementById('box2');
 msgDiv = document.getElementById('msg');
 img1 = document.getElementById('img1');
 box1Div.ondragover = function(e){e.preventDefault();}
 box2Div.ondragover = function(e){e.preventDefault();}

 img1.ondragstart = function(e){e.dataTransfer.setData('imgId','img1');}
 box1Div.ondrop = dropImghandler;
 box2Div.ondrop = dropImghandler;
}
function dropImghandler(e){
 showObj(e);//获取拖放所有信息
 showObj(e.dataTransfer);//获取文件
 e.preventDefault();
 var img = document.getElementById(e.dataTransfer.getData('imgId'));
 e.target.appendChild(img);
}
function showObj(obj){
 var s = '';
 for(var k in obj){s += k+":"+obj[k]+"<br/>";}
 msgDiv.innerHTML = s;
}
</script>
</html>

该功能是可以将图片拖拉到左右两个div中的方法,我觉得没啥用,可以当作哈啤
下面是拖拉上传代码,后端PHP获取到$_FILES之后就可以搞起来了

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>拖放上传</title>
 <style>
  #imgContainer{background:#ccc;width:500px;height:500px;}
 </style>
</head>
<body>
 <div id="imgContainer"></div>
 <div id="msg"></div>
</body>
<script>
var imgContainer,msgDiv;
window.onload = function(e){
 imgContainer = document.getElementById('imgContainer');
 msgDiv = document.getElementById('msg');
 imgContainer.ondragover = function(e){
  e.preventDefault();
 }
 imgContainer.ondrop = function(e){
  e.preventDefault();
  var f = e.dataTransfer.files[0]; 
  //这时已经获取到文件了,具体想要用第几个文件自己处理,发post请求后端处理就行了!

  //下面是图片获取到之后显示在imgContainer中的流程
  // var fileReader = new FileReader();
  // fileReader.onload=function(){
  // imgContainer.innerHTML = "<img src=\""+fileReader.result+"\">"
  // }
  // fileReader.readAsDataURL(f);
  // showObj(e); //显示上传信息
  // showObj(e.dataTransfer.files);
 }
}
function showObj(obj){
 var s = '';
 for(var k in obj){s += k+":"+obj[k]+"<br/>";}
 msgDiv.innerHTML = s;
}
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
checkbox 多选框 联动实现代码
Oct 22 Javascript
jQuery get和post 方法传值注意事项
Nov 03 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
Mar 27 Javascript
javascript中数组的定义及使用实例
Jan 21 Javascript
JavaScript错误处理
Feb 03 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
AngularJS基础 ng-paste 指令简单示例
Aug 02 Javascript
MUI 上拉刷新/下拉加载功能实例代码
Apr 13 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
vue移动端城市三级联动组件使用详解
Jul 26 Javascript
Vue实现简单计算器案例
Feb 25 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
Bootstrap表单控件使用方法详解
Jan 11 #Javascript
老生常谈的跨域处理
Jan 11 #Javascript
bootstrap选项卡使用方法解析
Jan 11 #Javascript
常用的javascript设计模式
Jan 11 #Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 #Javascript
Bootstrap实现提示框和弹出框效果
Jan 11 #Javascript
分享bootstrap学习笔记心得(组件及其属性)
Jan 11 #Javascript
You might like
php程序之die调试法 快速解决错误
2009/09/17 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
javascript new一个对象的实质
2010/01/07 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Python面向对象特殊成员
2017/04/24 Python
python与C互相调用的方法详解
2017/07/14 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
python调用百度语音REST API
2018/08/30 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
python时间time模块处理大全
2020/10/25 Python
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
技能竞赛活动方案
2014/02/21 职场文书
银行职员自我鉴定
2014/04/20 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
python执行js代码的方法
2021/05/13 Python