使用 Javascript 将文件拆分为多个块
Splitting a File into Chunks with Javascript
我正在尝试获取单个文件对象并将其拆分为指定块大小的块。
在我的示例中,尝试将单个文件拆分为 1MB 的块。所以我弄清楚需要多少块,然后我尝试从 'offset'(当前块我在 * 块大小)开始切片文件,然后切掉一个块大小。
我的第一个切片以 1MB 正确输出,但我的后续切片结果为 0,知道为什么吗?
在这里有一个工作代码笔:
http://codepen.io/ngalluzzo/pen/VvpYKz?editors=001[1]
var file = $('#uploadFile')[0].files[0];
var chunkSize = 1024 * 1024;
var fileSize = file.size;
var chunks = Math.ceil(file.size/chunkSize,chunkSize);
var chunk = 0;
console.log('file size..',fileSize);
console.log('chunks...',chunks);
while (chunk <= chunks) {
var offset = chunk*chunkSize;
console.log('current chunk..', chunk);
console.log('offset...', chunk*chunkSize);
console.log('file blob from offset...', offset)
console.log(file.slice(offset,chunkSize));
chunk++;
}
切错了末端:
console.log(file.slice(offset,chunkSize));
应该是
console.log(file.slice(offset,offset+chunkSize));
使用下面的函数将一个大文件拆分成多个块。我已经将它与 React 一起使用了,它是有效的。
createChunks = (file,cSize/* cSize should be byte 1024*1 = 1KB */) => {
let startPointer = 0;
let endPointer = file.size;
let chunks = [];
while(startPointer<endPointer){
let newStartPointer = startPointer+cSize;
chunks.push(file.slice(startPointer,newStartPointer));
startPointer = newStartPointer;
}
return chunks;
}
我正在尝试获取单个文件对象并将其拆分为指定块大小的块。 在我的示例中,尝试将单个文件拆分为 1MB 的块。所以我弄清楚需要多少块,然后我尝试从 'offset'(当前块我在 * 块大小)开始切片文件,然后切掉一个块大小。 我的第一个切片以 1MB 正确输出,但我的后续切片结果为 0,知道为什么吗? 在这里有一个工作代码笔:
http://codepen.io/ngalluzzo/pen/VvpYKz?editors=001[1]
var file = $('#uploadFile')[0].files[0];
var chunkSize = 1024 * 1024;
var fileSize = file.size;
var chunks = Math.ceil(file.size/chunkSize,chunkSize);
var chunk = 0;
console.log('file size..',fileSize);
console.log('chunks...',chunks);
while (chunk <= chunks) {
var offset = chunk*chunkSize;
console.log('current chunk..', chunk);
console.log('offset...', chunk*chunkSize);
console.log('file blob from offset...', offset)
console.log(file.slice(offset,chunkSize));
chunk++;
}
切错了末端:
console.log(file.slice(offset,chunkSize));
应该是
console.log(file.slice(offset,offset+chunkSize));
使用下面的函数将一个大文件拆分成多个块。我已经将它与 React 一起使用了,它是有效的。
createChunks = (file,cSize/* cSize should be byte 1024*1 = 1KB */) => {
let startPointer = 0;
let endPointer = file.size;
let chunks = [];
while(startPointer<endPointer){
let newStartPointer = startPointer+cSize;
chunks.push(file.slice(startPointer,newStartPointer));
startPointer = newStartPointer;
}
return chunks;
}