if (window.File && window.FileList && window.FileReader) { ... }>文件拖动
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }所有浏览器(iPhone和iPad上的浏览器除外)支持显示熟悉的“浏览”按钮的文件输入类型。 HTML5中引入了“多个”属性,我们可以将更改事件处理程序附加到该字段:
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);检索filelist对象
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);HTML5 Filelist对象是类似数组的文件对象集合。文件输入字段通过文件属性(event.target.files)返回filelist。丢弃的文件通过事件的dataTransfer.files属性(event.datatransfer.files)返回filelist对象。 因此,我们可以使用单个事件处理程序检索filelist对象:
// cancel event default e.preventDefault(); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, file; file = files[i]; i++) { ... }filelist集合包含许多文件对象。提供了三个有用的文件属性:
if (window.File && window.FileList && window.FileReader) { ... }有关更多信息,请参阅如何使用HTML5和JavaScript打开删除文件。
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }同样,ReadAsdataurl()方法将二进制图像数据作为编码数据URL检索,可以将其传递到Image SRC属性或画布元素:
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);有关更多信息,请参阅如何使用HTML5和JavaScript打开删除文件。
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);注意,我们还将文件名发送为HTTP标头。这是可选的,但是它允许我们使用诸如PHP之类的语言在服务器上使用其原始名称重新创建文件:
// cancel event default e.preventDefault(); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, file; file = files[i]; i++) { ... }有关更多信息,请参阅如何使用HTML5和AJAX异步上传文件。
// process image files under 300,000 bytes if (file.type.indexOf("image") == 0 && file.size < 300000) { ... }该处理程序接收一个带有.LOAD(传输的字节的数量)和.Total(文件大小)属性的事件对象。因此,可以计算进度并将其传递给HTML5进度标签或任何其他元素,例如
if (file.type.indexOf("text") == 0) { var reader = new FileReader(); reader.onload = function(e) { // get file content var text = e.target.result; ... } reader.readAsText(file); }有关更多信息,请参阅如何在HTML5和JavaScript中创建图形文件上传进度条。 希望您喜欢这个系列。文件拖放是一个重要的功能,可以转换Web应用程序的可用性。 HTML5终于变得容易了。
>实现HTML5拖放功能涉及几个步骤。首先,您需要创建一个Drop区域,该区域是用户可以删除文件的区域。这可以是任何HTML元素,但必须将“可拖动”属性设置为true。接下来,您需要为“拖动”和“丢弃”事件添加事件听众。当拖动物品在下降区域上方时,“拖曳”事件将发射,并且在删除该项目时发射“下降”事件。如果“ drop”事件的处理程序,您可以通过事件对象的“ datatrans.files”属性访问删除的文件。
>“ dataTransfer.files”和“ datatRansfer.items”之间有什么区别。 “ dataTransfer.files”属性是代表要拖动的文件的filelist对象。当您要处理服务器端上的文件时,这很有用。另一方面,“ dataTransfer.items”是代表所有阻力数据的DatatRansferitemlist对象。当您要处理不同类型的拖放数据时,这很有用,而不仅仅是文件。
是空的。 “ DataTransfer.files”属性仅在“ Drop”事件中填充。确保您是在正确的事件处理程序中访问它的。
您可以使用FileReader API读取丢弃文件的内容。首先,您需要创建一个新的FileReader对象。然后,您可以使用“ readastext”或“ readasdataurl”方法读取文件内容。 “ readastext”方法将文件读取为文本字符串,而“ readasdataurl”方法将文件读取为数据URL。
>
>我如何处理多个文件上传?
>
>我如何自定义文件在上面拖动文件时的外观? “ Dragleave”和“ Drop”活动处理程序。您可以在CSS中定义类的外观。>如何测试自动化测试中的拖放功能?测试拖放功能可能具有挑战性,因为它涉及复杂的用户交互。但是,某些测试库(例如硒)提供了模拟阻力动作的方法。您还可以创建一个模拟的“ Drop”事件并将其派遣到Drop Zone Element。
以上是HTML5文件拖动,删除,分析,读取和上传的详细内容。更多信息请关注PHP中文网其他相关文章!