【问题标题】:Splitting a File into Chunks with Javascript使用 Javascript 将文件拆分为块
【发布时间】:2015-12-30 03:03:46
【问题描述】:

我正在尝试获取单个文件对象并按指定的块大小将其拆分为块。 在我的示例中,尝试将单个文件拆分为 1MB 的块。所以我弄清楚它需要多少块,然后我试图从“偏移量”(我正在使用的当前块 * 块大小)开始对文件进行切片,然后切掉一个块大小。 我的第一个切片正确显示为 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++;
  }

【问题讨论】:

  • 您的 codepen 似乎对我有用。您的 codepen 和上面的代码之间的一个区别是您的 codepen 正确地说:file.slice(offset, offset + chunkSize) 而不是 file.slice(offset, chunkSize)。此外,您最后会生成一个空 blob,因为您的 while 条件应该是 while (chunk &lt; chunks)
  • 是的,我用下面的解决方案更新了 codepen,效果很好。感谢收看!

标签: javascript file chunking


【解决方案1】:

剪掉了错误的末端:

console.log(file.slice(offset,chunkSize));

应该是

console.log(file.slice(offset,offset+chunkSize));

【讨论】:

    【解决方案2】:

    使用下面的函数将一个大文件分成多个块。我已经将它与 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;
      }
    

    【讨论】:

    • 嗨 Fuad,我目前正面临上传大文件的问题,请您详细说明如何将大文件拆分为多个并上传到接受块上传的端点
    猜你喜欢
    • 2020-09-17
    • 2017-07-13
    • 1970-01-01
    • 2012-07-14
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多