如何从Javascript readEntries()中检索文件内容

时间:2017-11-28 12:12:39

标签: javascript angularjs html5 file-upload

我在我的网络应用程序上实现目录拖放,我收到了该事件并通过调用entry获取了相应的webkitGetAsEntry()。然后我检查entry对象:如果它是一个目录我继续列出所有文件。

  var entry = event.originalEvent.dataTransfer.items[0].webkitGetAsEntry();
  if (entry.isDirectory) {
        var reader = entry.createReader();
        reader.readEntries(function(entries){
        entries.forEach(function(entry) {
              alert(entry.fullPath);
        });
  });

此时我只能获取文件名,我想要的也是文件内容,但显然readEntries()返回的数组并不包含它

1 个答案:

答案 0 :(得分:1)

var entry = event.originalEvent.dataTransfer.items[0].webkitGetAsEntry();
if (entry.isDirectory) {
    var reader = entry.createReader();
    reader.readEntries(function(entries) {
        const files = entries.forEach(function(entry) {
            return new Promise(function(resolve, reject) {
                entry.file(
                    function(file) {
                        resolve(file);
                    },
                    function(error) {
                        reject(error);
                    }
                );
            });
        });

        Promise.all(files).then(function(fileData) {
            //do something with the data
            console.log(fileData);
        });
    });
}