Почему не поддерживается выполнение нескольких загрузок на S3 на iOS? - PullRequest
3 голосов
/ 07 декабря 2011

Постановка проблемы:

Я хочу загрузить большой двоичный файл (например, аудиоклип) из приложения iOS на S3, и я бы хотел, чтобы приложение обрабатывало разъединения (илинизкой связности), насколько это возможно, желательно путем загрузки двоичного файла в виде серии фрагментов.

К сожалению, ни AWSiOS SDK, ни инфраструктура S3 ASI, похоже, не поддерживают загрузку из нескольких частей или указываютчто они планируют добавить поддержку.Я понимаю, что могу начать «длинную» загрузку, используя beginBackgroundTaskWithExpirationHandler:, и это даст мне время для завершения загрузки (в настоящее время я считаю, что это 600 секунд), но что делать, если я не вСитуация для завершения указанной загрузки в течение этого периода?

Помимо беспокойства о завершении задач в течение этого периода, они являются «наилучшей практикой» в отношении того, как приложение должно возобновить загрузку или даже просто разбить большую загрузку на меньшую.chunks?

Я думал о том, чтобы написать библиотеку для общения с REST API S3 специально для многоэтапной загрузки, но это похоже на проблему, которую другие либо решили, либо осознали, что ее не нужно решать (возможно,за то, что он полностью соответствует платформе).

Другим (слишком сложным) решением было бы разбить файл на устройстве, загрузить его в S3 (или в другое место) и собрать их на S3 через серверпроцесс.Это кажется еще более неприятным, чем использование моей собственной библиотеки для многоэтапной загрузки.

Как другие решают эту проблему?

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Очевидно, я искал какую-то плохо устаревшую документацию.

в AmazonS3Client см .:

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

, которая даст вам S3MultipartUpload, который будет содержать uploadId .

Затем вы можете собрать S3UploadPartRequest с помощью initWithMultipartUpload: (S3MultipartUpload *) multipartUpload и отправить его, как обычно.

S3UploadPartRequest содержит свойство int partNumber, в котором вы можете указать номер части #Вы загружаете.

0 голосов
/ 25 февраля 2012

Вы можете написать некоторый код для этого, вы можете ссылаться на код из http://dextercoder.blogspot.in/2012/02/multipart-upload-to-amazon-s3-in-three.html. Базовый код Java, шаги могут быть использованы для iOS.

...