问题陈述:
我想将一个大型二进制文件(例如音频剪辑)从iOS应用程序上传到S3,我想让应用程序处理断开连接(或低连接性)尽可能强大,最好将二进制文件作为一系列块上传。
不幸的是,AWSiOS SDK和ASI的S3框架似乎都不支持多部分上传,或者表明他们计划添加支持。我意识到我可以使用beginBackgroundTaskWithExpirationHandler:
启动“长期”上传,并且会给我一个时间窗口来完成上传(我相信目前是600秒),但如果我不是,那该怎么办呢?在这种情况下完成所述上传的情况?
除了担心在这段时间内完成任务之外,对于应用程序应该如何恢复上传,甚至只是将较大的上传内容分成较小的块,它们是“最佳做法”吗?
我已经考虑过编写一个库来与S3的REST API进行通信,专门用于多部分上传,但这似乎是一个问题,其他问题已经解决,或者实现不需要解决(也许是因为完全适当的对于平台)。
另一个(过于复杂的)解决方案是将设备上的文件分块,将其上传到S3(或其他地方)并通过服务器进程在S3上重新组装。这似乎比滚动我自己的库进行多部分上传更加难以接受。
其他人如何处理这个问题?
答案 0 :(得分:2)
显然我正在查看一些非常过时的文档。
AmazonS3Client
中的请参阅:
- (S3MultipartUpload * AmazonS3Client)initiateMultipartUploadWithKey:(NSString *)theKey withBucket:(NSString *)theBucket
这将为您提供一个S3MultipartUpload
,其中包含 uploadId 。
然后,您可以使用initWithMultipartUpload: (S3MultipartUpload *) multipartUpload
将S3UploadPartRequest放在一起,并像往常一样发送。
S3UploadPartRequest包含一个int属性partNumber,您可以在其中指定要上传的部分#。
答案 1 :(得分:0)
您可以编写一些代码来执行此操作,您可以参考http://dextercoder.blogspot.in/2012/02/multipart-upload-to-amazon-s3-in-three.html中的代码。核心java代码,步骤可以用于iOS。