使用Javascript将文件拆分为块

Nic*_*zzo 7 javascript file chunking

我正在尝试获取单个文件对象,并按指定的块大小将其拆分为块.在我的示例中,尝试将单个文件拆分为1MB块.所以我想出它需要多少块,然后我试图从'offset'开始切片文件(当前块我在*块大小上),并切掉一个块大小.我的第一个切片正确地以1MB出现,但随后的切片变为0,任何想法为什么?在这里有一个工作的codepen:

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++;
  }
Run Code Online (Sandbox Code Playgroud)

Nic*_*zzo 7

正在切断错误的目的:

console.log(file.slice(offset,chunkSize));
Run Code Online (Sandbox Code Playgroud)

本来应该

console.log(file.slice(offset,offset+chunkSize));
Run Code Online (Sandbox Code Playgroud)


小智 7

使用下面的函数将一个大文件分割成多个块。我已经将它与反应一起使用了,它有效。

  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;
  }
Run Code Online (Sandbox Code Playgroud)