4

我正在使用 AFNetworking 将大文件下载到我的 iPad 应用程序中。

AFHTTPRequestOperation 的一个实例用于下载此文件。以下是供参考的代码 -

//request 是下载文件的 NSRequest 对象
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request
                                        成功:^(AFHTTPRequestOperation *操作,id responseObject){                                                                        

                                        } 失败:^(AFHTTPRequestOperation *操作,NSError *错误){


                                        }];
//这里的路径变量是下载文件的位置
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path
                                                               附加:是];
//因为这个类是AFHTTPClient的子类所以操作被添加到请求队列中
[自入队HTTPRequestOperation:操作];

现在这里的问题是,当我尝试使用以下功能暂停和恢复此下载时,pauseDownload 功能可以正常工作,但是恢复下载不能按应有的方式工作,并且似乎下载从头开始,正如我所期望的那样它将从它离开的地方恢复。这里可能是什么问题?

-(无效)暂停下载{
    [操作暂停];
}

-(void)resumeDownload{
   [操作简历​​];
}
4

1 回答 1

6

花了一段时间后,我想出了如何暂停和恢复下载。

AFNetworking 有扩展,其中之一是AFDownloadRequestOperation,它主要用于处理大文件的暂停和恢复。所以这里不使用 AFHTTPRequestOperation ,而是使用 AFDownloadRequestOperation 。下面是示例代码

//request 是下载文件的 NSRequest 对象,targetPath 是文件下载后的最终位置。不要忘记将 shouldResume 设置为 YES
AFDownloadRequestOperation *operation = [[AFDownloadRequestOperation alloc] initWithRequest:request
                                                                                     目标路径:目标路径
                                                                                   应该恢复:是];
[操作 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    //处理完成
    }失败:^(AFHTTPRequestOperation *操作,NSError *错误){
     //处理失败
 }];
[操作 setProgressiveDownloadProgressBlock:^(NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) {
    //处理进度

}];
//因为这个类是AFHTTPClient的子类所以操作被添加到请求队列中
[自入队HTTPRequestOperation:操作];

//用于暂停下载
-(无效)暂停下载{
    [操作暂停];
}
//用于恢复下载
-(void)resumeDownload{
   [操作简历​​];
}
于 2012-09-27T10:37:05.080 回答