我有一个表单,允许用户选择要上传的zip文件。我试图在将此zip文件上传到我的服务器之前对其进行客户端验证,因为上传可能需要一段时间,我还想节省带宽。
我需要做的就是读取应包含在zip中的.csv文件,并验证.csv中引用的zip中是否存在其他文件。为此,我尝试使用JSZip。
如果存档很小,这很有用。如果存档很大(使用~500MB文件进行测试),则Chrome会崩溃。
var reader = new FileReader();
reader.onload = function (e) {
console.log("Got here!");
// Read csv using JSZip, validate zip contents
};
reader.readAsArrayBuffer(file);
在我的代码中,我已经注释掉了我的onload回调中的所有逻辑,并验证了这些都没有导致崩溃。我发现在调用onload回调之前Chrome崩溃了。
我在FireFox中使用更大的zip文件进行了测试,效果很好。
答案 0 :(得分:1)
要使用这么大的文件,您应该一次加载 slice :
使用File.slice(start, end + 1)
,将生成的var zoomScale = 0.5
$(".draggable").draggable({
drag: function(event, ui) {
var changeLeft = ui.position.left - ui.originalPosition.left; // find change in left
var newLeft = ui.originalPosition.left + changeLeft / zoomScale; // adjust new left by our zoomScale
var changeTop = ui.position.top - ui.originalPosition.top; // find change in top
var newTop = ui.originalPosition.top + changeTop / zoomScale; // adjust new top by our zoomScale
ui.position.left = newLeft;
ui.position.top = newTop;
}
});
读作Blob
,处理该块,然后确保不会对其进行任何引用,以便可以对其进行垃圾回收。
根据您对块的操作,您甚至可能必须设置超时以给车库收集器额外的时间来达到它。确保测试您支持的所有浏览器,因为有些可能会迫使您有更大的超时或更小的块。另外,请记住,在过载功能不足的计算机上,垃圾收集可能需要更长的时间。
This is a good example of slicing.当然,你会切成更大的碎片。您可能还希望将其与页面上的下一个示例结合使用,以便提供有关进度的反馈,其中包括从当前块号中除了从慢/远程存储中获取块。