我尝试将使用UIImagePickerController录制的短视频上传到Amazon S3。我正在关注亚马逊示例代码,这似乎很简单,但我的文件没有出现在我的文件夹中。
我记录了委托方法,奇怪的是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];
获得任何响应的唯一委托方法是报告字节的唯一方法。其他人都没有被召唤。
更新
如果文件非常小,它实际上是有效的。一个110000字节的文件上传正常。它每次停止在196608字节。如果文件小于上传的文件。
答案 0 :(得分:2)
所以这里有两个问题。由于文件很大,我改用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"];