我正在设计和实现将一个大文件分成小块以便上传。
我已尝试将块大小分别为1mb,10mb,100mb,用于上传1gb,10gb文件。
我在Chrome浏览器上对其进行了测试,但未发现上述不同块大小之间的特定性能差异。
这里的快速问题。如果我选择块大小为1mb来上传10GB文件。将有1万个块要上传。 IE,Chrome或Safari执行这项繁重的任务是否有任何限制?
通常,一次将使用多少个工作线程/线程进行上传?
非常感谢!
for(let chunkIndex=0; chunkIndex< LAST_CHUNK_INDEX ;chunkIndex++) {
SEND_CHUNK[chunkIndex] // Using axios or xhr for uploading files.
}
关于工作原理,我们将每个块作为单独的请求发送。我发现按块上传文件的a sample。而且我发现the comment made by rizsi非常有用:
进行分块上载的主要原因是服务器不需要将整个文件存储在内存中-当直接将数据流传输到文件时,这也可以在服务器端解决,第二个原因是制作大文件如果TCP流中断,则可以恢复上传。
因此,我们应该在上一个块完成后发送每个块。如果我们一次发送所有数据块,它将立即将所有数据块泛滥到服务器,使整个事情变得毫无意义。