• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

HTML5开发拖拽文件上传Drag&Drop拖拽功能的处理

时间:2015年04月02日 15:29:29    来源:魔法猪系统重装大师官网    人气:4181

Drag&Drop 拖拽功能的处理

关于HTML5拖拽文件上传,其实国外已经有很多网站有这样的应用,最早推出拖拽上传应用的是 Gmail,它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送,但其实现在利用HTML5的功能实现,主要借助于新版支持的浏览器来实现,IE还是弱很多。

拖拽上传应用主要使用了以下 HTML5技术:

Drag&Drop : HTML5基于拖拽的事件机制.

File API :  可以很方便的让 Web 应用访问文件对象,File API 包括FileList、Blob、File、FileReader、URI scheme,本文主要讲解拖拽上传中用到的 FileList 和 FileReader 接口。

FormData : FormData 是基于 XMLHttpRequest Level 2的新接口,可以方便 web 应用模拟 Form 表单数据,重要的是它支持文件的二进制流数据,这样我们就能够通过它来实现 AJAX 向后端发送文件数据了。

HTML5 Drag & Drop 事件过去我们想实现网页中的拖拽效果,基本上都是使用DOM事件模型中的mousedown、mousemove、mouseup的事件监听来模拟拖拽效果,为了实现实时的拖拽移动效果,还要不停地获取鼠标的坐标,还要不停的修改元素的位置,代码要堆很多,而且性能上也很不好(不停地修改元素位置会导致页面reflow,除非绝对定位),现在有了html5原生的Drag & Drop 拖拽事件,真的是方便了许多,用”事半功倍”来形容绝不为过。

Drag & Drop 包括以下事件:

dragstart: 要被拖拽的元素开始拖拽时触发,这个事件对象是被拖拽元素

dragenter: 拖拽元素进入目标元素时触发,这个事件对象是目标元素

dragover: 拖拽某元素在目标元素上移动时触发,这个事件对象是目标元素

dragleave: 拖拽某元素离开目标元素时触发,这个事件对象是目标元素

dragend: 在drop之后触发,就是拖拽完毕时触发,这个事件对象是被拖拽元素

drop: 将被拖拽元素放在目标元素内时触发,这个事件对象是目标元素

完成一次成功页面元素拖拽的行为事件过程: dragstart –> dragenter –> dragover –> drop –> dragend 要想实现拖拽,首页需要阻止浏览器默认行为,一共四个事件。

1 $(document).on({
2     dragleave:function(e){    //拖离
3 e.preventDefault();
4 $('.dashboard_target_box').removeClass('over');
5     },
6     drop:function(e){        //拖后放
7 e.preventDefault();
8     },
9     dragenter:function(e){    //拖进
10 e.preventDefault();
11 $('.dashboard_target_box').addClass('over');
12     },
13     dragover:function(e){    //拖来拖去
14 e.preventDefault();
15 $('.dashboard_target_box').addClass('over');
16     }
17 });

获取文件数据 HTML5 File API

File API 中的 FileList 接口,它主要通过两个途径获取本地文件列表:

一种是 的表单形式,

一种是 e.dataTransfer.files拖拽事件传递的文件信息

var fileList = e.dataTransfer.files;

使用files 方法将会获取到拖拽文件的数组形势的数据,每个文件占用一个数组的索引,如果该索引不存在文件数据,将返回 null 值。可以通过length属性获取文件数量.

var fileNum = fileList.length;

判断文件类型

fileList[0].type.indexOf (’image’);

FormData 模拟表单实现Ajax文件上传

file.getAsBinary获取文件流很简单,但是要想上传数据,就要模拟一下表单的数据格式了,首先看看模拟表单的 js 代码, FormData模拟表单数据时更是简洁,不用麻烦的去拼字符串,而是直接将数据 append 到 formdata 对象中即可

1 xhr = new XMLHttpRequest();
2 xhr.open("post", "test.php", true);
3 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
4
5 var fd = new FormData();
6 fd.append('ff', fileList[0]);
7
8 xhr.send(fd);

HTML5,开发,拖拽,文件,上传,Drag,amp,Dro
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部