1.AFNetworking实现图片下载的代码:
//默认的配置
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//1.创建会话者管理
AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:configuration];
//2.创建下载任务了
NSURL *url = [NSURL URLWithString:@"http://dldir1.qq.com/qqfile/QQforMac/QQ_V5.4.0.dmg"];
//3.创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//4.开始去请求了 (创建的任务是挂起来的)
/**
* 第一个参数 - request:请求对象
* 第二个参数 - progress:下载进度block
* 其中: downloadProgress.completedUnitCount:已经完成的大小
* downloadProgress.totalUnitCount:文件的总大小
* 第三个参数 - destination:自动完成文件剪切操作
* 其中: 返回值:该文件应该被剪切到哪里
* targetPath:临时路径 tmp NSURL
* response:响应头
* 第四个参数 - completionHandler:下载完成回调
* 其中: filePath:真实路径 == 第三个参数的返回值
* error:错误信息
*/
NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
__weak typeof(self) weakSelf = self;
// 获取主线程,不然无法正确显示进度。
NSOperationQueue *mainqueue = [NSOperationQueue mainQueue];
[mainqueue addOperationWithBlock:^{
//下载的进度
weakSelf.progressView.progress = 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount;
weakSelf.currentLabel.text = [NSString stringWithFormat:@"当期下载进度%.2f%%",100.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount];
}];
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
// 新文件路径
NSString *newFilePath = [documentsPath stringByAppendingPathComponent:@"QQ_V5.4.0.dmg"];
return [NSURL URLWithString:newFilePath];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
NSLog(@"filePath:%@",filePath);
}];
//开始下载任务了
[task resume];
网友评论