我正在尝试将大文件发送到服务器,因此我正在使用分块技术以便以健壮的方式执行此操作。
const blobChunk = file.slice(offset, expectedSize);
服务器返回从哪里开始新块以及它应该有多大。如您所见,上述函数以递归方式执行。
但是,如果文件需要发送多个块,第二次调用file
时我得到一个空块(长度为0)。
我可以保证console.log
arg始终有效( readonly chunkIt = (file: Blob): void => {
var offset = 0;
var length = 512 * 1024;
while (offset >= 0) {
const blobChunk = file.slice(offset, length);
console.log(blobChunk);
offset += length;
if (offset > file.size) offset = -1;
}
}
时)。
我见过this question,但我确定我的文件未被删除或重命名。 我也见过this issue。我对Chrome和Firefox(最新版本)以及Edge都有相同的行为。
谢谢!
更新 好的,所以我做了一个虚拟方法来解决这个问题:
$("input[name='fileUpload']").on("change", (e) => {
const files = e.target.files;
if (typeof files === "undefined" || files === null || files.length === 0)
e.preventDefault();
const file = files[0];
this._client.chunkIt(file);
});
使用它:
Blob
仅在第一次记录正确的end
,以下全部为空。
解决
从这个问题 - Splitting a File into Chunks with Javascript我发现我忘记了我的getModuleProperty("")
索引。
答案 0 :(得分:0)
您需要使用splice()
代替slice()
<强>替换强>
const blobChunk = file.slice(offset, expectedSize);
<强>与强>
const blobChunk = file.splice(offset, expectedSize);