AFNetworking 下载文件简单实现源码

/**
 *  下载文件
 *
 *  @param URL          下载文件的地址
 *  @param parameterDic 参数
 *  @param progress     下载的进度
 *  @param scuess       成功的回调
 *  @param faild        失败的回调
 *
 *  @return task
 */
- (HLURLSessionTask *)downLoadWithURL:(NSString *)requestURL
                         parameterDic:(NSDictionary *)paramterDic
                             progress:(HLDownloadProgress)progress
                               scuess:(requestScuess)scuess
                                faild:(requestFaild)faild {
    
    [self setRequestURL:requestURL];

    //是否需要对url进行转码

    if (_shouldAutoEncode) {
        requestURL = [self encodeURL:requestURL];
    }
    
    HLURLSessionTask *sessionTask = nil;
    
    //构造资源链接
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    //创建AFN的manager对象
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
    //构造URL对象
    NSURL *url = [NSURL URLWithString:requestURL];
    //构造request对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    sessionTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
        
        
    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        //下载的路径
        NSURL *pathURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
        
        return [pathURL URLByAppendingPathComponent:[response suggestedFilename]];
        
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
        
        if (error) {
            
            //返回方法
            if (faild) {
                faild(error);
            }
            
        } else {
            
            //请求成功返回数据
            [self scuessResponse:response callback:scuess];
            
        }
        
    }];
    
    [sessionTask resume];
    
    return sessionTask;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值