我想加载多个大型大文件。要做到这一点,我从
中捏了代码每个块都有一个部件号,并传递给Python CGI程序,也给出了预期的块总数。当将完整的块集合接收到所需文件中时,Python CGI将块连接起来。 这很有效。
现在我想加载多个文件,每个文件都像以前一样分成块。每个文件都有一个id号,因此Python会知道将它存储在不同的目录中,但是我的内存耗尽而且崩溃了。 在
Reading multiple files with Javascript FileReader API one at a time
有人建议如何说服Javascript一次处理一个文件而不是异步处理,但我试图让这段代码与我当前的代码一起使用是不成功的。
文件分割代码如下。变量numparts终止递归调用。
任何人都可以建议如何修改底部循环所需的代码来顺序执行setupReader。
function setupReader(file,filename) {
var fileSize = (file.size - 1);
var chunkSize = 150000000;
var offset = 0;
var numparts= Math.ceil(fileSize/chunkSize);
var chunkReaderBlock = null;
var partno=0;
var readEventHandler = function(evt) {
if (evt.target.error == null) {
offset += chunkSize;
callback(evt.target.result); // callback for handling read chunk
} else {
console.log("Read error: " + evt.target.error);
alert("File could not be read");
return;
}
if (partno >= numparts) {
console.log("Done reading file");
return;
}
chunkReaderBlock(offset, chunkSize, file);
}
callback=function(result) {
partno+=1;
var bfile = result;
var query="?fileName="+filename+"&Part="+partno+"&of="+numparts+"&bfile="+bfile;
loadDoc('partition0',query,0);
}
chunkReaderBlock = function(_offset, length, _file) {
var r = new FileReader();
var blob = _file.slice(_offset, length + _offset);
r.onload = readEventHandler;
r.readAsDataURL(blob);
}
chunkReaderBlock(offset, chunkSize, file);
}
for (var i = 0; i < numfiles; i++) {
setupReader(fileList[i],fileList[i].name);
答案 0 :(得分:0)
我不了解python但是没有流媒体解决方案来处理大型文件上传? 也许是这样的:Python: HTTP Post a large file with streaming?
在这种情况下,将孔文件拆分成块并进行多个范围请求会变得毫无意义