gpt4 book ai didi

ios - 使用 BFTask 和 AWS SDK iOS v2 控制上传到 S3

转载 作者:行者123 更新时间:2023-11-29 02:42:41 24 4
gpt4 key购买 nike

我正在使用 BFTask连同 AWS SDK v2用于 iOS 将文件上传和下载到 AWS S3 存储。以下代码运行良好,但我想知道是否有人知道我如何才能更好地控制允许的最大上传数量,以及如何更好地接收上传进度反馈。我已经阅读了 AWS SDK v2 的文档、源代码和 BFTask 自述文件,但我仍然不确定如何获得控制权。例如,我将如何编辑以下代码以将同时运行的 BFTasks 的数量限制为 3,并且还接收当前上传的字节数而不是总字节数?

-(void) uploadAllFileRequests
{
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
__block int uploadCount = 0;
__block int uploadSuccess= 0;
__block int uploadFailure= 0;

NSMutableArray *tasks = [NSMutableArray new];
unsigned long totalnumberoffiles=self.arrayOfUploadRequests.count;

for (__block AWSS3TransferManagerUploadRequest *uploadRequestLocal in self.arrayOfUploadRequests)
{

[tasks addObject:[[transferManager upload:uploadRequestLocal] continueWithBlock:^id(BFTask *task) {
if (task.error != nil) {
if( task.error.code != AWSS3TransferManagerErrorCancelled
&&
task.error.code != AWSS3TransferManagerErrorPaused
)
{
NSLog(@"ERROR: %@",StatusLabelFailed);
uploadFailure ++;
}
} else {
uploadCount ++;
uploadSuccess ++;
NSLog(@"ETag: %@ %@ : %3.2f",[task.result valueForKey:@"ETag"], StatusLabelUploading, (uploadCount*1.0/totalnumberoffiles)*100.);
}
return nil;
}]];
}
[[BFTask taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask *task)
{
NSLog(@"Finished: Success: %i - Failed: %i -",uploadSuccess,uploadFailure);
return nil;
}];
}

这里的 self.arrayOfUploadRequests 是一个包含 AWSS3TransferManagerUploadRequest 的数组。非常感谢您的建议。谢谢!

最佳答案

AWSRequestAWSS3TransferManagerUploadRequest 的父类(super class),具有名为 uploadProgressdownloadProgress 的属性。您可以实现 AWSNetworkingUploadProgressBlockAWSNetworkingDownloadProgressBlock 来检索进度反馈。

将并发上传数量限制为三个的一种方法是按顺序并行执行三个任务。您可以组合此 blog post按顺序按并行 部分.

关于ios - 使用 BFTask 和 AWS SDK iOS v2 控制上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556729/

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