Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript将文件拆分为块_Javascript_File_Chunking - Fatal编程技术网

使用Javascript将文件拆分为块

使用Javascript将文件拆分为块,javascript,file,chunking,Javascript,File,Chunking,我尝试获取单个文件对象,并按指定的块大小将其拆分为块。 在我的示例中,尝试将单个文件拆分为1MB块。所以我计算出需要多少块,然后我试着从“偏移量”(当前块我在*块大小)开始切片文件,然后切片一个块大小。 我的第一个片正确地显示为1MB,但我随后的片显示为0,你知道为什么吗? 在这里有一个工作代码笔: var file=$('#uploadFile')[0]。文件[0]; var chunkSize=1024*1024; var fileSize=file.size; var chunks=Ma

我尝试获取单个文件对象,并按指定的块大小将其拆分为块。 在我的示例中,尝试将单个文件拆分为1MB块。所以我计算出需要多少块,然后我试着从“偏移量”(当前块我在*块大小)开始切片文件,然后切片一个块大小。 我的第一个片正确地显示为1MB,但我随后的片显示为0,你知道为什么吗? 在这里有一个工作代码笔:

var file=$('#uploadFile')[0]。文件[0];
var chunkSize=1024*1024;
var fileSize=file.size;
var chunks=Math.ceil(file.size/chunkSize,chunkSize);
var-chunk=0;
log('file size..',fileSize);
log('chunks…',chunks);

当(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;
  }
createChunks=(文件,cSize/*cSize应该是字节1024*1=1KB*/)=>{
设起始点=0;
让endPointer=file.size;
让chunks=[];

while(startpointer)你的代码笔似乎对我有用。你的代码笔和上面的代码之间的一个区别是,你的代码笔正确地说:
file.slice(offset,offset+chunkSize)
而不是
file.slice(offset,chunkSize)
。另外,由于您的while条件应该是
while(chunk
,因此您在最后生成了一个空blob。是的,我用下面的解决方案更新了代码笔,效果很好。感谢您的查看!
  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;
  }