热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5+PHP拖拽文件上传

Drag&Drop:HTML5基于拖拽的事件机制.FileAPI:可以很方便的让Web应用访问文件对象,FileAPI包括FileList、Blob、File、FileRead

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

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

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


HTML5 Drag & Drop 事件

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

Drag & Drop 包括以下事件

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

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

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

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

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

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

完成一次成功页面元素拖拽的行为事件过程:dragstart –>dragenter –> dragover –> drop –> dragend

//要想实现拖拽,首页需要阻止浏览器默认行为,一共四个事件。

$(document).on({

  dragleave:function(e){ //拖离

e.preventDefault();

$('.dashboard_target_box').removeClass('over');

  },

  drop:function(e){ //拖后放

e.preventDefault();

  },

  dragenter:function(e){ //拖进

e.preventDefault();

$('.dashboard_target_box').addClass('over');

  },

  dragover:function(e){ //拖来拖去

e.preventDefault();

$('.dashboard_target_box').addClass('over');

  }

});

获取文件数据 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’)

AJAX 上传图片(file.getAsBinary &FormData)

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

xhr = new XMLHttpRequest();

xhr.open("post","test.php", true);

xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");

var fd = new FormData();

fd.append('ff', fileList[0]);

xhr.send(fd);















选择你的图片

开始上传


拖动图片到

这里






 





推荐阅读
  • 转 Web 设计师的 50 个超便利工具(下)
    作为一个Web设计师并不容易,不仅考虑设计与架构,还要时刻注意各种小细节,设计师的工作被各种各样的问题包围,你需要一套超级便 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 俗话说,好记性不如烂笔头,这些东西也都是我Google来的,做个笔记以后自己安装也方便些。因为官方wiki的BeginnersGuide讲的非常好,大部分步骤按照wiki一步一步来就 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 从零开始的ESP8266探索(15)WiFi其他方法和WiFi事件响应
    文章目录目的WiFi其他方法WiFi事件响应事件列表注册事件使用示例总结目的WiFi在使用过程中并非会一直如希望般稳定运行的,为了应对这些情况就需要能够了解WiFi ... [详细]
  • 前端监控数据网络(要求阻拦)
    所谓web,纵然你我素未谋面,便知志趣相投;深居简出,亦知天下之大。01—为何阻拦要求如今的web运用,大都是经由过程要求(http)去猎取资本,拿到资本后再显现给用户,一个页面中 ... [详细]
  • Well,Ivebeensearchingfewdaysalready,howtodisplayHTML5videoinfull-screenmodeonandroi ... [详细]
  • 记一道腾讯前端笔试题
    我今年4月投递了腾讯前端开发岗位,很可惜笔试题没通过,48小时内给出答案回复面试官,我的答案太过于简单,所以后面面试官估计也就懒得回我这个菜鸡来(嘤嘤嘤)。当然以我现在的眼光来重新 ... [详细]
  • 新版本在线体验地点已上线,迎接体验?—2017-01-14喜好就Star,不只是Fork;想要分享的结果才是驱动力,而手艺仅仅是一种要领。TP-adminTP-admin即基于Th ... [详细]
  • js中运行机制的详细分析(示例解析)
    web前端|js教程node.js,html5,html,css,javascriptweb前端-js教程本篇文章给大家带来的内容是关于js中运行机制的详细分析(示例解析),有一定 ... [详细]
author-avatar
rsidugjig
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有