Android中的文件上传暂停和恢复

时间:2015-06-15 13:54:31

标签: android file-upload android-asynctask

我有一个android应用程序。我希望实现函数通过线程或AsyncTasks将图像/视频上传到服务器。为了上传图像/视频,我想实现暂停和恢复功能。这意味着它必须保持暂停和恢复功能,它将上传到服务器。现在我有查询是否可以实现这个功能(暂停和恢复)?如果有任何想法,那么请帮助我,我将如何维护这一点。谢谢所有。

1 个答案:

答案 0 :(得分:3)

我相信你已经正常上传到服务器了。要实现可恢复的上载,您必须将文件拆分为块并指定要发送到服务器的文件的字节范围。我可以就此给你一个粗略的想法。

例如:假设您有一个5 MB(百万字节)的文件。您必须按如下方式发送文件。

第1部分:0000000- 9999999字节-HTTP 204

第2部分:1000000- 1999999字节-HTTP 204

第3部分:2000000- 2999999字节-HTTP 204

第4部分:3000000- 3999999字节-HTTP 204

第5部分:4000000- 4999999字节 - HTTP 200

设置以下标题

Content-Length: 1000000

Content-Range: bytes 1000000/5000000

您必须指定内容范围并发送相应的字节流数组。除非文件完整,否则所有成功的块上传都将返回204.如果您在任何时候上传中断,您可以轮询服务器并获取上载状态。可以从文件的那一点开始恢复以完成它破坏的块。我们将文件分成块,因为我们无法将整个内容保存在内存中。可以将整个文件作为单个部分发送,并在较小文件的确切字节点处继续。

另一种选择是在本地管理索引。完成每个块后,将索引变量的状态更新为文件。如果要恢复上传,您可以从头开始恢复整个块。您不必轮询服务器以获取状态。

成功完成上传后,服务器返回200状态(即使您将整个文件上传到设置了标题的单个块中)。有关详细信息,请参阅Youtube的文档或Pandastream。

https://developers.google.com/youtube/2.0/developers_guide_protocol_resumable_uploads