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 select控制插件
Aug 17 Javascript
快速排序 php与javascript的不同之处
Feb 22 Javascript
javascript自然分类法算法实现代码
Oct 11 Javascript
javascript页面上使用动态时间具体实现
Mar 18 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
Apr 30 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
Aug 10 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 Javascript
ElementUI之Message功能拓展详解
Oct 18 Javascript
详解JavaScript中精度失准问题及解决方法
Feb 04 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通用防注入程序 推荐
2011/02/26 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
Python中的并发编程实例
2014/07/07 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python用户管理系统
2018/03/13 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
详解python:time模块用法
2019/03/25 Python
wxPython实现画图板
2020/08/27 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
大队委竞选演讲稿
2014/04/28 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js