相关疑难解决方法(0)

什么是HTML5 File.slice方法实际上在做什么?

我正在使用自定义API来允许用户上传文件(希望是任意大小).如果文件很大,它将被chunkfied,并在对服务器的多个请求中处理.

我正在编写使用FileFileReader(HTML5)的代码,根据许多在线示例.一般来说(从我在网上看到的)对于一个chunkfied文件传输,人们将首先从他们的文件对象中获取一大块数据

var file = $('input[type=file]')[0].files[0];
var blob = file.slice(start,end)
Run Code Online (Sandbox Code Playgroud)

然后使用a FileReader来读取blob readAsArrayBuffer(blob)readAsBinaryString(blob)

最后在FileReader.onload(e)方法中,将数据发送到服务器.对文件中的所有块重复此过程.

我的问题是

为什么我需要使用FileReader?如果我不使用它,并简单地发送blob File.slice,是否有任何保证在我尝试在每个请求中发送数据之前完成切片操作.File对象是否在创建时加载整个文件(当然不是?).是否File.slice寻求参数规定的位置,然后读取信息?该文档没有给我一个关于它如何实现的线索.

javascript algorithm html5 file-upload chunking

26
推荐指数
1
解决办法
1万
查看次数

使用Javascript将文件拆分为块

我正在尝试获取单个文件对象,并按指定的块大小将其拆分为块.在我的示例中,尝试将单个文件拆分为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)

javascript file chunking

7
推荐指数
2
解决办法
6245
查看次数

标签 统计

chunking ×2

javascript ×2

algorithm ×1

file ×1

file-upload ×1

html5 ×1