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 相关文章推荐
jquery里的each使用方法详解
Dec 22 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
微信小程序实战之轮播图(3)
Apr 17 Javascript
vue单页应用中如何使用jquery的方法示例
Jul 27 jQuery
微信小程序实现天气预报功能
Jul 18 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 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中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
python使用socket向客户端发送数据的方法
2015/04/29 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
python里反向传播算法详解
2020/11/22 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
建筑设计师岗位职责
2013/11/18 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
大学生村官考核材料
2014/05/23 职场文书
信访工作汇报材料
2014/10/27 职场文书
销售合作意向书范本
2015/05/08 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript