牛骨文教育服务平台(让学习变的简单)

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

      现代浏览器支持拖放本地文件到浏览器上,应用可以进行文件的编辑、上传等操作,但是之前并不支持文件夹拖放。但是从最新的Chrome 21开发版开始,这个功能已经得到了支持。

      文件拖放

      之前文件拖放的代码如下:

<div id=”dropzone”></div>
 
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允许我们从文件系统拖放一个或者多个文件夹到浏览器窗口上,你只需要对处理放置对象的方式进行一些调整。

<div id=”dropzone”></div>
 
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规范里标准的文件处理方法进行处理(例如.isFile或者.isDirectory属性)。

      如果要了解FileSystemAPI的更多信息, HTML5rocks上有一篇《FileSystem API历险》。至于拖放特性,可以看看这篇文章