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渐变发光导航菜单的实例代码
Mar 27 Javascript
javascript jq 弹出层实例
Aug 25 Javascript
通过action传过来的值在option获取进行验证的方法
Nov 14 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
javascript时间差插件分享
Jul 18 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
Sep 03 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
vue读取本地的excel文件并显示在网页上方法示例
May 29 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修改session_id示例代码
2014/01/08 PHP
php中动态修改ini配置
2014/10/14 PHP
php生成动态验证码gif图片
2015/10/19 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
php实现微信支付之现金红包
2018/05/30 PHP
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
高三政治教学反思
2014/02/06 职场文书
公司合并协议书范本
2014/09/30 职场文书
收款授权委托书
2014/10/02 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书