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优化效率 提升性能解决方案
Sep 06 Javascript
JavaScript全局函数使用简单说明
Mar 11 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 Javascript
javascript中mouseover、mouseout使用详解
Jul 19 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
Sep 04 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 Javascript
jQuery在header中设置请求信息的方法
Mar 06 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
Nov 27 Javascript
利用js canvas实现五子棋游戏
Oct 11 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函数解决SQL injection
2006/10/09 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
python执行get提交的方法
2015/04/29 Python
Python的time模块中的常用方法整理
2015/06/18 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
老龄工作先进事迹
2014/08/15 职场文书
党的群众路线调研报告
2014/11/03 职场文书
银行求职自荐信范文
2015/03/04 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书