我正在使用UIImagePicker在我的应用程序中选择或拍照。在我选择图片后,我需要将它上传到AWS S3。我做了以下步骤,
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imgView.image = chosenImage;
imageUrl = info[UIImagePickerControllerReferenceURL];
NSString * timestamp = TimeStamp;
NSString *UUID = [[NSUUID UUID] UUIDString];
fileName = [NSString stringWithFormat:@"posts/images/%@%@.jpg", UUID, timestamp];
[picker dismissViewControllerAnimated:YES completion:NULL];
}为了上传,
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.body = image;
uploadRequest.key = fileName;
uploadRequest.bucket = MY_BUCKET;
uploadRequest.ACL = AWSS3ObjectCannedACLPublicRead;
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
__weak BTEditProfileViewController *weakSelf = self;
[[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {
if (task.error) {
if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]) {
switch (task.error.code) {
case AWSS3TransferManagerErrorCancelled:
case AWSS3TransferManagerErrorPaused:
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"COMPLETED!!");
});
}
break;
default:
NSLog(@"Upload failed: [%@]", task.error);
break;
}
} else {
NSLog(@"Upload failed: [%@]", task.error);
}
}
if (task.result) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"RESULT:::%@",task.result);
});
}
return nil;
}];当我运行这个程序时,我得到了以下错误。
Upload failed: [Error Domain=com.amazonaws.AWSS3TransferManagerErrorDomain Code=5 "'body' can not be nil" UserInfo={NSLocalizedDescription='body' can not be nil}]我该怎么解决这个问题?
发布于 2015-11-23 19:24:50
body属性需要是NSURL的一个实例(需要是一个文件URL)。
请注意,我们正在逐步淘汰AWSS3TransferManager。AWSS3TransferUtility取代了AWSS3TransferManager和can NSData,所以您应该看看。
https://stackoverflow.com/questions/33848677
复制相似问题