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实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
父页面显示遮罩层弹出半透明状态的dialog
Mar 04 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
Oct 13 Javascript
JS中的二叉树遍历详解
Mar 18 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
小白谈谈对JS原型链的理解
May 03 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
JavaScript怎样在删除前添加确认弹出框?
May 27 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
layui复选框的全选与取消实现方法
Sep 02 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
php中Snoopy类用法实例
2015/06/19 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
Vue数据绑定实例写法
2019/08/06 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
python从入门到精通(DAY 2)
2015/12/20 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
以下的初始化有什么区别
2013/12/16 面试题
初二政治教学反思
2014/01/12 职场文书
化学专业自荐信
2014/05/28 职场文书
中国梦口号
2014/06/13 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书