비교적 간단 해 보입니다. iOS 용 AWS SDK (v2)를 사용 중이며 .png 파일을 다운로드하고 UIImage의 화면에 표시하려고합니다. 모든 것이 실제로 작동합니다!iOS 용 AWS S3 SDK v2 - UIImage로 이미지 파일 다운로드
이 코드가 실행됩니다AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithAccessKey:@"MY_ACCESS_KEY" secretKey:@"MY_SECRET_KEY"];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSWest1 credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
AWSS3 *transferManager = [[AWSS3 alloc] initWithConfiguration:configuration];
AWSS3GetObjectRequest *getImageRequest = [AWSS3GetObjectRequest new];
getImageRequest.bucket = @"MY_BUCKET";
getImageRequest.key = @"MY_KEY";
[[transferManager getObject:getImageRequest] continueWithBlock:^id(BFTask *task) {
if(task.error)
{
NSLog(@"Error: %@",task.error);
}
else
{
NSLog(@"Got image");
NSData *data = [task.result body];
UIImage *image = [UIImage imageWithData:data];
myImageView.image = image;
}
return nil;
}];
의 continueWithBlock이 실행됩니다, 그래서 있어이 이미지가 기록됩니다, 어떤 작업 오류가 없습니다 : 그냥 아주 이상하게 ...
여기 내 코드입니다. 그리고 이것은 상당히 빨리 일어난다. 그러나 약 10 초 후 UIImageView가 화면에 업데이트됩니다. 나는 심지어 디버거를 통해 심지어 NSLog(@"Got image");
라인을 따르는 라인이 오래 걸렸는지 확인하지 못했다. 모두 매우 빠르게 실행되었지만 UIImageView는 UI에서 업데이트되지 않습니다.
감사합니다, 매력처럼 작동합니다.) 항상 어려움을 겪고있는 도서관 제작자의 말을 잘 듣습니다. –
BTW 이제 작은 이미지를 다운로드하는 데 실제로 몇 초가 걸리지 만 CloudFront를 활용하면 해결 될 것입니다. –
[task.result body]는 NSData가 아닌 NSURL의 인스턴스입니다. aws-ios-sdk-2.1.2에서 테스트 – Javan