gpt4 book ai didi

ios - 如何从 Amazon S3 下载 - iOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:06 24 4
gpt4 key购买 nike

我正在尝试从我的 Amazon S3 存储桶 (v2) 下载图像,但无法弄清楚。我不断从 [transferManager download:downloadRequest] 获取 null;

已填写所有帐户详细信息/ key 。感谢任何帮助。

-(void) startApp:(NSDictionary *)launchOptions {
// create credentials
AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1
accountId:@"xxxx-xxxx-xxxx"
identityPoolId: @"us-east-1:xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
unauthRoleArn:@"Cognito_AppUnauth_DefaultRole"
authRoleArn:nil];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1
credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
}

- (instancetype) init {
AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new];
downloadRequest.bucket = @"mybucket.s3.amazonaws.com";
downloadRequest.key = @"XXXXXXXXXXXXXXX";
downloadRequest.downloadingFileURL = [NSURL URLWithString:@"https://s3.amazonaws.com/MYBUCKET/hello.png"];
[self download:downloadRequest];

return self;
}
- (BFTask *)download:(AWSS3TransferManagerDownloadRequest *)downloadRequest {
NSLog(@"Download request: %@", downloadRequest);
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
NSLog(@"%@", [transferManager download:downloadRequest]);
return nil;
}

最佳答案

首先,您滥用了 AWSS3TransferManagerDownloadRequestdownloadingFileURL 属性。 downloadingFileURL 不应引用您从中获取的 S3 位置;相反,它应该指的是您正在写入该文件的磁盘位置,例如:

NSString *downloadingFilePath = [NSTemporaryDirectory()stringByAppendingPathComponent:@"hello.png"];
NSURL *downloadingFileURL = [NSURL fileURLWithPath:downloadingFilePath];

一旦该文件下载完成,它将出现在该文件路径中。

不过,要知道您的文件何时准备就绪,我建议像这样在一个 block 中执行您的下载请求:

[[transferManager download:downloadRequest]continueWithExecutor
[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *task) {
if (task.result) {
AWSS3TransferManagerDownloadOutput *downloadOutput = task.result;
self.fetchedImage = [UIImage imageWithContentsOfFile:downloadingFilePath];
} else if (task.error) {
NSLog(@"Error: %@", task.error);
}
}];

关于ios - 如何从 Amazon S3 下载 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com