我正在使用支持drop folder的上传器工作,没关系,但我没有用例。
我有一个文件夹里面有多个文件和文件夹,文件数量是2511,文件夹是2451。我不知道原因,但在drop函数之后它只识别1576个文件及其父文件夹。
简化这是我使用的放置功能:
filescnt=0;
nop=0;
$("#dropingArea").on('dragover',function(e){
e.preventDefault();
e.stopPropagation();
});
$("#dropingArea").on('dragenter',function(e){
e.preventDefault();
e.stopPropagation();
});
$("#dropingArea").on('drop',function(e){
console.log(e);
if(e.originalEvent.dataTransfer){
if(e.originalEvent.dataTransfer.files.length) {
e.preventDefault();
e.stopPropagation();
/*UPLOAD FILES HERE*/
console.log(e.originalEvent.dataTransfer.items);
items = e.originalEvent.dataTransfer.items;
for (var i=0; i<items.length; i++) {
var item = items[i].webkitGetAsEntry();
if (item) {
traverseFileTree(item);
}
}
}
}
});
function traverseFileTree(item, path) {
path = path || "";
if (item.isFile) {
// Get file
filescnt++;
item.file(function(file) {
console.log("File:", path + file.name);
});
} else if (item.isDirectory) {
// Get folder contents
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
for (var i=0; i<entries.length; i++) {
traverseFileTree(entries[i], path + item.name + "/");
}
});
}
}
现在问题似乎也出现在dropzone和plupload上。
我已经测试了相同的文件夹 http://protonet.github.io/plupload/examples/drag_and_drop.html 结果相同。
http://www.dropzonejs.com/ 结果相同。
我感谢任何帮助 感谢。
答案 0 :(得分:0)
来自http://www.html5rocks.com/en/tutorials/file/filesystem/
要读取目录的内容,请创建DirectoryReader并调用 它的readEntries()方法。无法保证全部 目录的条目将在一次调用中返回 readEntries()。这意味着你需要继续打电话 DirectoryReader.readEntries()直到不再返回结果。
再次从上面的页面:
function onInitFs(fs) {
var dirReader = fs.root.createReader();
var entries = [];
// Call the reader.readEntries() until no more results are returned.
var readEntries = function() {
dirReader.readEntries (function(results) {
if (!results.length) {
listResults(entries.sort());
} else {
entries = entries.concat(toArray(results));
readEntries();
}
}, errorHandler);
};
readEntries(); // Start reading dirs.
}
请注意,在我们读取某些结果(results.length!= 0)的情况下,我们针对相同的dirReader调用readEntries以获取文件的下一个“块”。