jeudi 2 juillet 2015

Upload Asset to AWS in objective-c

I'm trying to upload a video from an iOS device's library to AWS.

I have a method called uploadVideo that gets passed an ALAsset asset which I then try to upload as follows:

- (void)uploadVideo:(ALAsset *)asset :(UIImage*)image{
    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
    AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
    uploadRequest.bucket = @"test";
    NSString *assetFilename = [[asset defaultRepresentation] filename];
    if(!assetFilename){
        NSDate *now = [NSDate date];
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
        [dateFormat setDateFormat:@"MM-dd-yyyy_HH-mm-ss-SS"];
        assetFilename = [dateFormat stringFromDate:now];
    }
    uploadRequest.key = assetFilename;
    uploadRequest.body = asset.defaultRepresentation.url.absoluteURL;
    NSLog(@"uploadRequest.body: %@", asset.defaultRepresentation.url.absoluteString);

    [[transferManager upload:uploadRequest] continueWithExecutor:[AWSExecutor mainThreadExecutor]
           withBlock:^id(AWSTask *task) {
               if (task.error) {
                   if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]) {
                       switch (task.error.code) {
                           case AWSS3TransferManagerErrorCancelled:
                           case AWSS3TransferManagerErrorPaused:
                               break;

                           default:
                               NSLog(@"Error: %@", task.error);
                               break;
                       }
                   } else {
                       // Unknown error.
                       NSLog(@"Error: %@", task.error);
                   }
               }

               if (task.result) {
                   AWSS3TransferManagerUploadOutput *uploadOutput = task.result;
                   // The file uploaded successfully.
                   NSLog(@"uploaded the file to aws successfully with task result %@", task.result);
               }
               return nil;
       }];
}

I am receiving the error:

Error: Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x1706686c0 {NSFilePath=/asset.mp4, NSUnderlyingError=0x170256170 "The operation couldn’t be completed. No such file or directory"}

But when I log the uploadRequest.body path, it seems to be the full path:

uploadRequest.body: assets-library://asset/asset.mp4?id=01DD578D-6320-430E-BAB4-F339B3EB4D5C&ext=mp4

How do I properly set the body of a selected asset to upload to AWS?




Aucun commentaire:

Enregistrer un commentaire