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 相关文章推荐
Ajax同步与异步传输的示例代码
Nov 21 Javascript
调用innerHTML之后onclick失效问题的解决方法
Jan 28 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
jQuery中attr()方法用法实例
Jan 05 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
May 17 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
微信小程序 详解页面跳转与返回并回传数据
Feb 13 Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
Vue通过ref父子组件拿值方法
Sep 12 Javascript
node省市区三级数据性能测评实例分析
Nov 06 Javascript
js实现多个标题吸顶效果
Jan 08 Javascript
JS canvas实现画板和签字板功能
Feb 23 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
详解JWT token心得与使用实例
2019/08/02 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
python脚本开机自启的实现方法
2019/06/28 Python
C#的几个面试问题
2016/05/22 面试题
初中教师业务学习材料
2014/05/12 职场文书
保护环境倡议书500字
2014/05/19 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
红旗渠导游词
2015/02/09 职场文书
重阳节主题班会
2015/08/17 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js