2011-12-06 65 views
3

問題陳述:爲什麼iOS不支持在iOS上執行多部分上傳到S3?

我想從iOS應用S3上傳一個大的二進制(如音頻剪輯),我想使斷開的應用程序的處理(或低連接)作爲穩健儘可能,最好是將二進制文件作爲一系列塊上傳。

不幸的是,AWSiOS SDK和ASI的S3框架似乎都不支持多部分上傳,或者表示他們計劃添加支持。我意識到我可以使用beginBackgroundTaskWithExpirationHandler:發起一個'長期'上傳,這會給我一個時間窗口來完成上傳(我相信目前爲600秒),但是如果我不處於在該時限內完成上傳?

不用擔心規定時間內完成任務

除此之外,是一個應用程序應該如何恢復上傳,甚至只是打破了更大的載成小塊他們的一個「最佳實踐」?

我已經想過編寫一個庫來與S3的REST API專門針對多部分上傳進行對話,但是這看起來像是其他問題已經解決,或者實現了無需解決的問題(也許是因爲完全處於適合於平臺)。

另一個(過於複雜)溶液將分塊的裝置上的文件,上傳那些S3(或其它地方),並且它們在S3上通過服務器進程重新組裝。這似乎比滾動我自己的庫進行多部分上傳更難以接受。

其他人如何處理這個問題?

回答

2

顯然,我一直在尋找一些嚴重過時的文檔。

AmazonS3Client

看到:

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

,這將給你一個S3MultipartUpload其中將包含一個UPLOADID

然後,您可以使用initWithMultipartUpload: (S3MultipartUpload *) multipartUpload放在一起的S3UploadPartRequest併發送你通常會。

S3UploadPartRequest包含一個int屬性部分號碼,你可以指定你要上傳的部分#。