让服务器接受大文件的多部分上传,并具备像S3一样的中止/恢复功能

1 投票
1 回答
860 浏览
提问于 2025-04-17 13:50

亚马逊的S3有一个很不错的功能,可以把大文件分成小部分上传。这对我来说如果用S3的话会很有用,但我现在并没有使用它。

我的问题是:我需要让安卓手机定期上传一些比较大的文件(每个大约50MB的二进制数据)。因为这些手机是通过移动网络上传的,而在某些地方信号不太好,所以不能保证信号强。因此,简单地用一个40MB的数据进行上传并不太可行。我需要想办法把数据分割开来(可能分成10MB的小块),然后在信号好的时候上传它们。一旦所有的小块都上传完,就需要把它们合并成一个完整的文件。

我对客户端需要怎么做有一些基本的了解,主要是通过阅读亚马逊的S3客户端API,但对服务器端是怎么处理的就不太清楚了。我愿意用Python或PHP来写这个服务器。有没有适合这两种语言的库可以实现这个功能?我搜索了大约一个小时,但没有找到相关的资料。

总的来说,我希望能找到一些能指引我方向的东西。如果能提供关于这个的更多信息,以及使用什么协议和头信息来尽量做到RESTful,那就太好了。谢谢!

1 个回答

0

根据关于分段上传的REST API文档,亚马逊希望用户把大文件拆分成多个小部分,然后逐个上传。在上传之前,你需要先获取一个上传ID,每次上传时都要包含这个上传ID和正在上传的文件部分的编号。

你可能需要创建一个客户端程序,这个程序可以把大文件分割成多个小部分,并按照上面提到的方式并行上传这些部分。

撰写回答