到目前为止,我已经非常幸运地学习并实现了将图片上传到亚马逊的S3服务。我要把照片上传到服务器上。都具有不同的名称,因此不会覆盖另一个名称。
我可以下载一个镜像,但只能使用一个特定的名称(即“image.png”)。我想下载所有的镜像。然后我会将它们放在一个tableView中。我只是在文档中找不到这个问题的答案。这是我的代码,可以下载一个镜像。
-(void)download{
//Creating S3 transfer manager client
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
//Dowloading actual object
//Create the NSURL for thte download location.
NSString *downloadingFilePath = [NSTemporaryDirectory()stringByAppendingPathComponent:@"downloaded-image.png"];
NSURL *downloadingFileURL = [NSURL fileURLWithPath:downloadingFilePath];
//Construct download request
AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new];
downloadRequest.bucket = @"MyBucketName";
downloadRequest.key = @"image.png"; //<----- I can only download an image by this name?
downloadRequest.downloadingFileURL = downloadingFileURL;
//Download the file
[[transferManager download:downloadRequest]continueWithExecutor:[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *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) {
AWSS3TransferManagerDownloadOutput *downloadOutput = task.result;
//File downloade successfully
NSLog(@"Download Output: %@", downloadOutput);
}
self.selectedImageView.image = [UIImage imageWithContentsOfFile:downloadingFilePath];
return nil;
}];
}发布于 2015-01-10 03:45:32
AWSS3有一个名为- listObjects:的方法,它返回AWSS3ListObjectsOutput的一个实例。AWSS3ListObjectsOutput的contents属性是一个AWSS3Object数组。您可以遍历数组并在AWSS3Object的每个key上调用- download:,以便下载存储桶中的所有对象。
发布于 2015-01-11 09:17:01
如果您想采用惰性方法,AWS Command-Line Interface (CLI)可以在一个命令中复制多个文件,甚至是递归子目录。
还有aws s3 sync命令,它只能复制新的或修改过的文件,包括子目录。
因此,您可能希望调用CLI来下载图片,然后使用您自己的代码处理它们。
发布于 2015-10-07 05:27:08
您可以使用AWSS3ListObjectsRequest从Bucket下载所有图片。下面是代码。
AWSS3ListObjectsRequest *listObjectsRequest = AWSS3ListObjectsRequest新建;listObjectsRequest.bucket = @"YourBucketName";
[[s3 listObjects:listObjectsRequest] continueWithBlock:^id(AWSTask *task)
{
if (task.error)
{
[MBProgressHUD hideAllHUDsForView:self.view animated:YES];
NSLog(@"listObjects failed: [%@]", task.error);
}
else
{
AWSS3ListObjectsOutput *listObjectsOutput = task.result;
for (AWSS3Object *s3Object in listObjectsOutput.contents)
{
downloadingFilePath = [[NSTemporaryDirectory() stringByAppendingPathComponent:@"download"] stringByAppendingPathComponent:s3Object.key];
NSURL *downloadingFileURL = [NSURL fileURLWithPath:downloadingFilePath];
AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new];
downloadRequest.bucket = @"YourBucketName";
downloadRequest.key = s3Object.key;
downloadRequest.downloadingFileURL = downloadingFileURL;
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
[[transferManager download:downloadRequest] continueWithBlock:^id(AWSTask *task)
{
if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]
&& task.error.code == AWSS3TransferManagerErrorPaused)
{
NSLog(@"Download paused.");
}
else if (task.error)
{
NSLog(@"Upload failed: [%@]", task.error);
}
else
{
dispatch_async(dispatch_get_main_queue(), ^
{
//_imgNew.image = [ UIImage imageNamed:[NSString stringWithFormat:@"%@",downloadRequest.downloadingFileURL]];
});
}
return nil;
}];
}
dispatch_async(dispatch_get_main_queue(), ^{
[self setUpScrollViews];
NSLog(@"Set images called");
[MBProgressHUD hideAllHUDsForView:self.view animated:YES];
});
}
return nil;
}];https://stackoverflow.com/questions/27867419
复制相似问题