我正在使用HTML5处理文件上传服务。在用例中,用户想要上传整个目录,他以CD / DVD的形式接收该目录。
使用
在Chrome中读取目录webkitdirectory | mozwebkitdirectory |目录
属性。
Mozilla Firefox今年8月在第55版中改编了此功能。 从Hardisk读取,此功能在Chrome上运行良好,即使速度稍慢,也可以在Firefox上使用。
但是一旦用户选择CD / DVD路径或CD / DVD上的目录,Firefox就会变得非常慢并且更频繁地挂起。
这是一个简单的代码片段,它加载一个目录,遍历文件元数据,并将一个文件加载到内存中以显示其大小。
document.getElementById("filepicker").addEventListener("change", function(event) {
let output = document.getElementById("listing");
let files = event.target.files;
let fileReader = new FileReader();
let start = new Date().getTime();
for (let i=0; i<files.length; i++) {
let item = document.createElement("li");
item.innerHTML = files[i].webkitRelativePath;
output.appendChild(item);
};
console.log("Time used for iterating over file meta: " + (new Date().getTime() - start) / 1000 + "s");
fileReader.addEventListener("load", function(evt) {
console.log("File Loaded");
console.log("Time for loading Single File into memory: " + (new Date().getTime() - start) / 1000 + "s");
let blob = new Blob([new Uint8Array(evt.target.result)], {type: "arraybuffer"});
console.log("Blob Size is: " + blob.size); //To show that file is read to memory.
}, false);
console.log("START LOADING FILE");
start = new Date().getTime();
fileReader.readAsArrayBuffer(files[0]);
}, false);
<div>
Select Directory:
<input id=filepicker type="file" webkitdirectory mozdirectory msdirectory directory multiple>
<div>
<div id=listing></div>
您可以自己尝试,也许错误仅取决于我的CD / DVD驱动器。 我的问题是:
如果您遇到类似问题,我可以向Mozilla填写问题报告。