将文件从iOS上传到Amazon S3

我正尝试将使用UIImagePickerController录制的短片上传到Amazon S3。 我遵循亚马逊示例代码,这似乎很简单,但我的文件没有出现在我的桶。

我logging委托方法,奇怪totalBytesWritten比totalBytesExpected小。

这是我的代码:

AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:AWS_ACCESS_KEY withSecretKey:AWS_SECRET_KEY]; S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:@"test.mov" inBucket:@"mybucket"]; por.contentType = @"video/quicktime"; NSData *videoData = [NSData dataWithContentsOfURL:videoURL]; por.data = videoData; por.delegate = self; [s3 putObject:por]; 

获得任何响应的唯一委托方法是一个报告字节。 别人不叫。

UPDATE

如果文件非常小,它实际上工作。 一个110000字节的file upload罚款。 它每次停在196608字节。 如果文件比上传的文件小。

所以这里有两个问题。 由于文件是相当大的我切换到使用S3TransferManager我也设置了终点是至关重要的。 最终的代码是:

 AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:AWS_ACCESS_KEY withSecretKey:AWS_SECRET_KEY]; s3.endpoint = [AmazonEndpoints s3Endpoint:US_WEST_2]; S3TransferManager *transferManager = [S3TransferManager new]; transferManager.s3 = s3; transferManager.delegate = self; s3.endpoint = [AmazonEndpoints s3Endpoint:US_WEST_2]; NSData *videoData = [NSData dataWithContentsOfURL:_videoURL]; [transferManager uploadData:videoData bucket:@"bucketname" key:@"test.mov"];