目标c - Amazon S3在iOS中的异步方法跟踪下载的文件



在使用以下AWS iOS的异步方法下载多个文件时,我想跟踪下载的是哪个图像。

以下代码用于异步图像下载。

S3TransferManager *tm = [S3TransferManager new];
S3TransferOperation *downloadFileOperation =  [tm downloadFile:storeFilePath bucket:Bucket key:downloadPath];  

上面的方法在for循环中,因此可能有n图像可供下载。

通知图像已下载的委托方法

-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response { }

但是我没有找到任何东西,使用它我可以管理下载的实际图像。不管是第一张还是第二张。

任何想法在哪里我可以把一些额外的数据,这可以在图像下载接收?

可以设置requestTag:

S3PutObjectRequest *putObjectRequest = [ [ S3PutObjectRequest alloc ] initWithKey:keyFile inBucket:self.s3BucketName ];
putObjectRequest.requestTag = urlStringFile;
putObjectRequest.filename = fileName;

,然后分析它:

- (void)request:(AmazonServiceRequest*) request didCompleteWithResponse:(AmazonServiceResponse*) response
{
    NSLog(@"Upload finished. RequestTag = %@", request.requestTag);
}

就我只能从Amazon s3下载内容而言,我使用了ASIHTTPRequest。(虽然这个自2011年以来没有维护,但我发现它非常有用,并且易于使用我的应用程序)。

代码示例中,

//初始化网络队列

ASINetworkQueue *networkQueue = [[ASINetworkQueue alloc] init];
[networkQueue reset];
[networkQueue setRequestDidFinishSelector:@selector(requestDone:)];  //This is where download completion will be notified.

//初始化请求。

ASIS3ObjectRequest *request = [ASIS3ObjectRequest requestWithBucket:@"Bucket_Name" key:@"/Path/file"];

这就是我正在寻找的,我需要关于下载完成时我正在下载的所有信息。此userInfo包含下载完成时可用的所有数据。

NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Data", @"Key", nil];  
request.userInfo = userInfo;
userInfo = nil;

//结束userInfo集合。

[networkQueue addOperation:request];  // add request in ASINetworkQueue object. We can also add multiple request here.

最后,

[networkQueue go];    // This will start downloading.

//委托方法,其中下载完成将被通知

- (void)requestDone:(ASIS3Request *)request
{
    NSLog(@"UserInfo : %@", request.userInfo); // Request data, to manage which request is complete.
}

最新更新