Chrome新特性:文件夹拖拽支持

最后更新于:2022-04-01 19:44:15

      现代浏览器支持拖放本地文件到浏览器上,应用可以进行文件的编辑、上传等操作,但是之前并不支持文件夹拖放。但是从最新的Chrome 21开发版开始,这个功能已经得到了支持。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2e98a674.jpg)       **文件拖放**       之前文件拖放的代码如下: ~~~
var dropzone = document.getElementById('dropzone'); dropzone.ondrop = function(e) { var length =e.dataTransfer.files.length; for (var i = 0; i < length;i++) { var file =e.dataTransfer.files[i]; ... // do whatever you want } }; ~~~       通过这段代码,我们可以从本地拖放一个或者多个文件到浏览器里。但是当我们拖拽的是文件夹时,操作会被拒绝或者被当成文件处理而导致失败。 **文件夹拖放**       Chrome21允许我们从文件系统拖放一个或者多个文件夹到浏览器窗口上,你只需要对处理放置对象的方式进行一些调整。 ~~~
var dropzone = document.getElementById('dropzone'); dropzone.ondrop = function(e) { var length = e.dataTransfer.items.length; for (var i = 0; i < length; i++) { var entry = e.dataTransfer.items[i].webkitGetAsEntry(); if (entry.isFile) { ... // do whatever you want } else if (entry.isDirectory) { ... // do whatever you want } } }; ~~~       请注意这里有一个最大的不同是我们可以把放置的对象用新的Javascript API - getAsEntry来处理,最后得到一个Entry对象(FileEntry或者DirectoryEntry)。       拿到Entry对象的访问权限后,你可以通过[FileSystem API规范](http://www.w3.org/TR/file-system-api/)里标准的文件处理方法进行处理(例如.isFile或者.isDirectory属性)。       如果要了解FileSystemAPI的更多信息, HTML5rocks上有一篇《[FileSystem API历险](#)》。至于拖放特性,可以看看[这篇文章](http://wiki.whatwg.org/wiki/DragAndDropEntries)。
';