8.AFNetworking实现图片下载

2017-10-28  本文已影响10人  峰子1994

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];
上一篇下一篇

猜你喜欢

热点阅读