基本上,我正在寻找一种在服务器上存储部分上传内容的最佳方式。文件将逐 block 上传。 block 可能以任意顺序并行出现。我需要将它们以某种形式临时存储在某个地方,然后从上传的 block 中构建完整的文件。我对如何做到这一点有一些想法,但我想知道是否已经有一些最佳实践、标准或某种 RFC ......?
更新:
上传将通过 HTTP 进行。
最佳答案
这个问题之前已经解决过很多次了。使用 BITS、Torrents、FTP 等
基础是:
> session 初始化
>发送文件名、chunk大小、chunk个数、每个chunk的hash
> 收到信号时发送数据 block 。每个 block 以 block 索引号开头
<接收文件名等
< 分配正确名称和大小的空文件
< 分配完成文件(比如 name.status)并且每个 block 有一个 int。这些代表该 block 的完成百分比
< 在所需索引处开始 block 的信号
<< 在接收到每个 block 时,将其保存到正确位置的分配文件中
<< 当每个 block 完成时确认散列。如果错误再次标记为0%
<当接收到所有 block 时,删除 name.status 并解锁分配的文件
一些系统使用大块并将文件名,大小等放在所有 block 的前面,因此 block 是独立的并且可以在不启动 session 的情况下接收
关于asyncfileupload - 在服务器上存储文件的最佳方式是按 block 上传吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5132484/