5.1 Transferring Data using standard AWSS3TransferUtility
5.1.1 Uploading a File
Here are code snippets you can use for uploading a file.
NSURL *fileURL = // The file to upload.
AWSS3TransferUtilityUploadExpression *expression = [AWSS3TransferUtilityUploadExpression new];
expression.progressBlock = ^(AWSS3TransferUtilityTask *task, NSProgress *progress) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something e.g. Update a progress bar.
});
};
AWSS3TransferUtilityUploadCompletionHandlerBlock completionHandler = ^(AWSS3TransferUtilityUploadTask *task, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"File upload completed");
});
};
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
[[transferUtility uploadFile:fileURL
bucket:@"YourBucketName"
key:@"YourObjectKeyName"
contentType:@"text/plain"
expression:expression
completionHander:completionHandler]continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"Error: %@", task.error);
}
if (task.exception) {
NSLog(@"Exception: %@", task.exception);
}
if (task.result) {
AWSS3TransferUtilityUploadTask *uploadTask = task.result;
// Do something with uploadTask.
}
return nil;
}];
let progressBlock: AWSS3TransferUtilityProgressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
// Do something e.g. Update a progress bar.
})
}
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = progressBlock
let transferUtility = AWSS3TransferUtility.default()
let completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
if ((error) != nil){
NSLog("Failed with error")
} else{
NSLog("success")
}
})
}
transferUtility.uploadFile(fileURL,
bucket: "YourBucketName",
key: "YourObjectKeyName",
contentType: "text/plain",
expression: expression,
completionHander: completionHandler).continue({ (task) -> AnyObject! in
if let error = task.error {
NSLog("Error: %@",error.localizedDescription);
}
if let exception = task.exception {
NSLog("Exception: %@",exception.description);
}
if let _ = task.result {
NSLog("Upload Starting!")
// Do something with uploadTask.
}
return nil;
})
5.1.2 Uploading Binary Data
Here are code snippets you can use for uploading binary data.
NSData *dataToUpload = // The data to upload.
AWSS3TransferUtilityUploadExpression *expression = [AWSS3TransferUtilityUploadExpression new];
expression.progressBlock = ^(AWSS3TransferUtilityTask *task, NSProgress *progress) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something e.g. Update a progress bar.
});
};
let completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
// Do something e.g. Alert a user for transfer completion.
// On failed uploads, `error` contains the error object.
})
}
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
[[transferUtility uploadData:dataToUpload
bucket:@"YourBucketName"
key:@"YourObjectKeyName"
contentType:@"text/plain"
expression:expression
completionHander:completionHandler] continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"Error: %@", task.error);
}
if (task.exception) {
NSLog(@"Exception: %@", task.exception);
}
if (task.result) {
AWSS3TransferUtilityUploadTask *uploadTask = task.result;
// Do something with uploadTask.
}
return nil;
}];
let progressBlock: AWSS3TransferUtilityProgressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
// Do something e.g. Update a progress bar.
})
}
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = progressBlock
let transferUtility = SecureAWSS3TransferUtility.defaultS3TransferUtility()
let completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock = { (task, error) -> Void in
dispatch_async(dispatch_get_main_queue(), {
// Do something e.g. Alert a user for transfer completion.
// On failed uploads, `error` contains the error object.
})
}
transferUtility?.uploadData(data as Data,
bucket: "YourBucketName",
key: "YourObjectKeyName",
contentType: "text/plain",
expression: expression,
completionHander: completionHandler).continue({ (task) -> Any? in
if let error = task.error {
NSLog("Error: %@",error.localizedDescription);
}
if let exception = task.exception {
NSLog("Exception: %@",exception.description);
}
if let _ = task.result {
NSLog("Upload Starting!")
// Do something with uploadTask.
}
return nil;
})
5.1.3 Downloading to a File
Here are code snippets you can use for downloading to a file.
NSURL *fileURL = // The file URL of the download destination.
AWSS3TransferUtilityDownloadExpression *expression = [AWSS3TransferUtilityDownloadExpression new];
expression.progressBlock = ^(AWSS3TransferUtilityTask *task, NSProgress *progress) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something e.g. Update a progress bar.
});
};
AWSS3TransferUtilityDownloadCompletionHandlerBlock completionHandler = ^(AWSS3TransferUtilityDownloadTask *task, NSURL *location, NSData *data, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something e.g. Alert a user for transfer completion.
// On successful downloads, `location` contains the S3 object file URL.
// On failed downloads, `error` contains the error object.
});
};
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
[[transferUtility downloadToURL:fileURL
bucket:S3BucketName
key:S3DownloadKeyName
expression:expression
completionHander:completionHandler] continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"Error: %@", task.error);
}
if (task.exception) {
NSLog(@"Exception: %@", task.exception);
}
if (task.result) {
AWSS3TransferUtilityDownloadTask *downloadTask = task.result;
// Do something with downloadTask.
}
return nil;
}];
let expression = AWSS3TransferUtilityDownloadExpression()
expression.progressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
// Do something e.g. Update a progress bar.
})
}
let completionHandler: AWSS3TransferUtilityDownloadCompletionHandlerBlock = { (task, location, data, error) -> Void in
DispatchQueue.main.async(execute: {
if ((error) != nil) {
NSLog("Failed with error")
} else {
if((data) != nil) {
NSLog("download Successful")
}
}
})
}
let transferUtility = AWSS3TransferUtility.default()
transferUtility.download(to: fileURL,
bucket: "bayun-company13",
key: "file.pdf",
expression: expression,
completionHander: completionHandler).continue({ (task) -> AnyObject? in
if let error = task.error {
NSLog("Error: %@",error.localizedDescription);
}
if let exception = task.exception {
NSLog("Exception: %@",exception.description);
}
if let result = task.result {
NSLog("Download Starting!")
// Do something with uploadTask.
}
return nil;
})
5.1.4 Downloading as Binary Data
Here are code snippets you can use for downloading binary data.
AWSS3TransferUtilityDownloadExpression *expression = [AWSS3TransferUtilityDownloadExpression new];
expression.progressBlock = ^(AWSS3TransferUtilityTask *task, NSProgress *progress) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something e.g. Update a progress bar.
});
};
AWSS3TransferUtilityDownloadCompletionHandlerBlock completionHandler = ^(AWSS3TransferUtilityDownloadTask *task, NSURL *location, NSData *data, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something e.g. Alert a user for transfer completion.
// On successful downloads, `data` contains the S3 object.
// On failed downloads, `error` contains the error object.
});
};
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
[[transferUtility downloadDataFromBucket:S3BucketName
key:S3DownloadKeyName
expression:expression
completionHander:completionHandler] continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"Error: %@", task.error);
}
if (task.exception) {
NSLog(@"Exception: %@", task.exception);
}
if (task.result) {
AWSS3TransferUtilityDownloadTask *downloadTask = task.result;
// Do something with downloadTask.
}
return nil;
}];
let expression = AWSS3TransferUtilityDownloadExpression()
expression.progressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
// Do something e.g. Update a progress bar.
})
}
let completionHandler: AWSS3TransferUtilityDownloadCompletionHandlerBlock = { (task, location, data, error) -> Void in
DispatchQueue.main.async(execute: {
if ((error) != nil){
NSLog("Failed with error")
} else {
if((data) != nil) {
NSLog("Download Successful")
}
}
})}
let transferUtility = AWSS3TransferUtility.default()
transferUtility.downloadData(fromBucket: S3BucketName,
key: S3DownloadKeyName,
expression: expression,
completionHander: completionHandler).continue({ (task) -> AnyObject? in
if let error = task.error {
NSLog("Error: %@",error.localizedDescription);
}
if let exception = task.exception {
NSLog("Exception: %@",exception.description);
}
if let result = task.result {
NSLog("Download Starting!")
// Do something with uploadTask.
}
return nil;
})
Previous5. Secure Amazon S3 Transfer UtilityNext5.2 Transferring Data using Bayun's SecureAWSS3TransferUtility
Last updated