【问题标题】:Why is Performing Multi-part Uploads to S3 on iOS not supported?为什么不支持在 iOS 上对 S3 执行分段上传?
【发布时间】:2011-12-06 22:23:25
【问题描述】:

问题陈述:

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    AmazonS3Client 看到:

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

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

    然后,您可以使用 initWithMultipartUpload: (S3MultipartUpload *) multipartUpload 组合一个 S3UploadPartRequest 并像往常一样发送。

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

    【讨论】:

      【解决方案2】:

      您可以编写一些代码来执行此操作,您可以参考http://dextercoder.blogspot.in/2012/02/multipart-upload-to-amazon-s3-in-three.html 中的代码。核心java代码,步骤可用于iOS。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-14
        • 2020-04-08
        • 1970-01-01
        • 2017-08-23
        • 2014-10-14
        • 1970-01-01
        • 2015-04-28
        • 1970-01-01
        相关资源
        最近更新 更多