让服务器接受具有中止/恢复功能(如 S3)的大文件的分段上传


Get Server to Accept Multipart Uploads for Large Files with Abort/Resume Functionality like S3

Amazon S3 有一个非常好的功能,允许为更大的文件部分上传文件。如果我使用 S3,这对我非常有用,但我不是。

这是我的问题:我将让Android手机半定期上传相当大的文件(每个二进制数据~50MB)。由于这些手机使用移动网络来执行此操作,并且在某些使用它们的地方覆盖范围参差不齐,因此无法保证强信号。因此,在内容正文中使用 40MB 数据执行简单的 PUT 不会很好地工作。我需要以某种方式拆分数据(可能分成 10MB 块),并在信号允许时上传它们。上传所有区块后,需要将它们合并到一个文件中。

通过阅读Amazon的S3客户端API,我对客户端需要如何支持这一点有一个基本的了解,但不知道服务器正在做什么来允许这样做。我愿意用Python或PHP编写服务器。有没有任何库供这两种语言允许这种事情?搜索了大约一个小时后,我找不到任何东西。

基本上,我正在寻找任何可以帮助我指明正确方向的东西。有关此内容的信息以及使用哪些协议和标头来使其尽可能RESTful的信息将非常棒。谢谢!

从用于多部分上传的 REST API 文档中,亚马逊似乎希望客户端将大文件分解为较小的多个部分并单独上传它们。在上传之前,您需要获取上传 ID,并在每次上传时包括上传 ID 和正在上传的文件部分的部件号。

您可能必须进行结构化的方法是创建一个客户端,该客户端可以将大文件拆分为多个部分,并使用上述指定的约定并行上传它们。