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 相关文章推荐
javascript 操作select下拉列表框的一点小经验
Mar 20 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
JS仿JQuery选择器功能
Mar 08 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 Javascript
node跨域转发 express+http-proxy-middleware的使用
May 31 Javascript
js+canvas实现验证码功能
Sep 21 Javascript
GOJS+VUE实现流程图效果
Dec 01 Javascript
微信小程序入门之广告条实现方法示例
Dec 05 Javascript
微信小程序实现手指拖动选项排序
Apr 22 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP如何将XML转成数组
2016/04/04 PHP
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
js初始化验证实例详解
2016/11/26 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
Web服务器框架 Tornado简介
2014/07/16 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python多任务及返回值的处理方法
2019/01/22 Python
python3 re返回形式总结
2020/11/20 Python
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
竞聘上岗演讲稿范文
2014/01/10 职场文书
公司活动总结范文
2014/07/01 职场文书
机械专业求职信范文
2014/07/15 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
小马王观后感
2015/06/11 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书