我在我的网络应用程序上实现目录拖放,我收到了该事件并通过调用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()
返回的数组并不包含它
答案 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);
});
});
}