我正在使用自定义 API 与用户一起上传文件(希望大小不受限制)。如果文件太大,它将被分成块,并在多个请求中处理到服务器。
我正在编写代码,根据网上的很多示例使用 File
和 FileReader
(HTML5)。通常情况下(从网上读取的信息来看),对于分块文件传输,人们会先从文件对象中获取数据块。
var file = $('input[type=file]')[0].files[0];
var blob = file.slice(start,end)
接下来使用 FileReader
读取 blob 数据,可以使用 readAsArrayBuffer(blob)
或 readAsBinaryString(blob)
最后在 FileReader.onload(e)
方法中将数据发送到服务器。对文件中的所有块重复此过程。
我的问题是
为什么我需要使用 FileReader
?如果我不使用它,只是使用 File.slice
发送 blobs ,是否有保证切片操作会在每个请求中尝试发送数据之前完成。创建 File
对象时,是否会加载整个文件(肯定不会吧?)。File.slice
是否会寻找参数指定的位置,然后读取信息?文档没有给出如何实现的线索。