ios - 为什么不支持在 iOS 上执行分段上传到 S3?

标签 ios cocoa-touch amazon-s3 amazon-web-services multipart

问题陈述:

我想将大型二进制文件(例如音频剪辑)从 iOS 应用程序上传到 S3,并且我想让应用程序对断开连接(或低连接性)的处理尽可能稳健,最好通过将二进制文件作为一系列 block 上传。

不幸的是,AWSiOS SDK 和 ASI 的 S3 框架似乎都不支持分段上传,或者表示他们计划添加支持。我意识到我可以使用 beginBackgroundTaskWithExpirationHandler: 启动“较长”的上传,这会给我一个完成上传的时间窗口(我相信目前是 600 秒),但是如果我无法在该时间范围内完成上述上传?

除了担心在该时间范围内完成任务之外,它们是否是应用程序应如何恢复上传或什至只是将较大的上传分成较小的 block 的“最佳实践”?

我考虑过编写一个库来与 S3 的 REST API 对话,专门用于分段上传,但这似乎是一个其他已经解决或意识到不需要解决的问题(也许是完全合适的对于平台)。

另一种(过于复杂的)解决方案是在设备上对文件进行分块,将这些文件上传到 S3(或其他地方),然后通过服务器进程在 S3 上重新组装它们。这似乎比滚动我自己的库进行多部分上传更令人不快。

其他人是如何处理这个问题的?

最佳答案

显然我正在查看一些严重过时的文档。

AmazonS3Client 中查看:

- (S3MultipartUpload * AmazonS3Client)initiateMultipartUploadWithKey:(NSString *)theKey withBucket:(NSString *)theBucket    

这将为您提供一个 S3MultipartUpload,其中将包含一个 uploadId

然后您可以使用 initWithMultipartUpload: (S3MultipartUpload *) multipartUpload 将 S3UploadPartRequest 放在一起并像往常一样发送。

S3UploadPartRequest 包含一个 int 属性 partNumber,您可以在其中指定要上传的部分 #。

关于ios - 为什么不支持在 iOS 上执行分段上传到 S3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407750/

相关文章:

iphone - 在iphone模拟器上接收邮件

ios - ios IAP收据可以追踪到某个或登录的appleID吗?

ios - 更改GMSCameraPosition缩放(iOS)

iphone - 如何将 IBAction 事件与图像相关联?

ruby - 尝试存储临时文件时的 Aws::S3::Errors::BadDigest

amazon-web-services - 为什么 spark 从 S3 读取和写入这么快

hadoop - S3 和 EMRFS 有什么区别?

ios - iPad 未连接它显示操作系统版本

ios - 如何在 Xcode 7 中将 libz.1.2.3.dylib 添加到 iOS 9.1?

iphone - 在 cocos2d 中使用 NSTimer 制作随机对象