美文网首页网络程序员
AFN的基本使用(上传和下载)

AFN的基本使用(上传和下载)

作者: CoderJyq | 来源:发表于2016-06-06 15:31 被阅读2376次

1.使用AFN上传数据

1,创建会话管理者对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

2,发送POST请求上传

//非文件参数
NSDictionary *dict = @{@"username":@"jyq"};
/*
     第一个参数:请求路径
     第二个参数:非文件参数 username(参数名) (传NSDictionary)
     第三个参数:constructingBodyWithBlock 在该block中告诉AFN要上传的文件数据信息
     第四个参数:progress 进度回调
     第五个参数:success 成功后的回调
     第六个参数:failure 失败后的回调
*/
[manager POST:@"http://xxx" parameters:dict constructingBodyWithBlock:
^(id<AFMultipartFormData>  _Nonnull formData) {
        /*
         第一个参数:文件的URL路径
         第二个参数:参数名称 file
         第三个参数:在服务器上的名称
         第四个参数:文件的类型
         */
        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/User/Desktop/屏幕快照 2016-03-28 下午11.35.03.png"] 
name:@"file" fileName:@"123.png" mimeType:@"image/png" error:nil];

    } progress:^(NSProgress * _Nonnull uploadProgress) {
        
        //计算文件的上传进度
        NSLog(@"%f",1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        //responseObject 响应体信息(默认已经完成了JSON的解析,是一个OC对象)
        NSLog(@"上传成功---%@",responseObject);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"上传失败---%@",error);
    }];

2.使用AFN下载数据

1,创建会话管理者对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

2,创建请求对象

NSURL *url = [NSURL URLWithString:@"http://xxx"];
    
NSURLRequest *request = [NSURLRequest requestWithURL:url];

3,发送POST请求上传

/*
     第一个参数:请求对象
     第二个参数:progress 进度回调
     第三个参数:destination--(downloadTask-)
        在该block中告诉AFN应该把文件存放在什么位置,AFN内部会自动的完成文件的剪切处理
        targetPath:文件的临时存储路径(tmp)
        response:响应头信息
        返回值:文件的最终存储路径
     第四个参数:completionHandler 完成之后的回调
     filePath:文件路径 == 返回值
*/
    NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:
    ^(NSProgress * _Nonnull downloadProgress) {
        
        //进度回调,可在此监听下载进度(已经下载的大小/文件总大小)
        NSLog(@"%f",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
        
    } destination:^NSURL * _Nonnull(NSURL * _Nonnull 
    targetPath, NSURLResponse * _Nonnull response) {
        
        NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, 
NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
        
        NSLog(@"targetPath:%@",targetPath);
        NSLog(@"fullPath:%@",fullPath);
        
        return [NSURL fileURLWithPath:fullPath];
        
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, 
    NSError * _Nullable error) {
        
        NSLog(@"filePath:%@",filePath);
        
    }];
    
    [download resume];

补充:AFN可以使用KVO监听方法, 可监听下载进度等

[download addObserver:<#(nonnull NSObject *)#> forKeyPath:<#(nonnull NSString *)#> options:<#(NSKeyValueObservingOptions)#> context:<#(nullable void *)#>]

相关文章

  • 多线程网络07

    1 AFN基本使用(GET和POST) 2 AFN实现文件下载 3 AFN实现文件上传 5 AFN序列化相关处理 ...

  • AFN的基本使用(上传和下载)

    1.使用AFN上传数据 1,创建会话管理者对象 2,发送POST请求上传 2.使用AFN下载数据 1,创建会话管理...

  • iOS开发之AFNetworking框架

    AFN网络请求和文件上传下载 使用AFN框架处理网络数据请求,遇到以下报错: 首先AFN使用方法,都是从创建man...

  • AFNetworking

    一、AFN的GET和POST请求 二、AFN的"下载+上传+响应体的几种解析方式+网络状态监听"

  • 04 AFN

    一: AFN框架基本使用 #######1.1 AFN内部结构 #######1.2 AFN的基本使用 1, 发送...

  • iOS开发-AFNetworking框架基本使用

    一、AFN框架基本使用 1.1 AFN内部结构 1.2 AFN的基本使用 (1)发送POST请求的方式 (2)使用...

  • iOS之网络篇(你知道这些零碎的知识吗?)

    1.AFN使用技巧 2.AFN文件上传 3.使用AFN进行序列化处理 4.使用AFN来检测网络状态 5.数据安全 ...

  • iOS 使用 ZipArchive 压缩 zip 并上传

    使用 ZipArchivepod 'SSZipArchive' 使用afn 上传到服务器

  • AFN框架使用

    AFN框架使用 1.AFN框架基本使用 2 .AFN的基本使用 (1)发送GET请求的两种方式(POST同) (2...

  • iOS文件上传

    文件上传的步骤 使用NSURLConnection上传文件例子 使用AFN框架上传图片例子 获取文件的MIMETy...

网友评论

  • LD_左岸:completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath,
    NSError * _Nullable error) {

    NSLog(@"filePath:%@",filePath);

    }];


    这个地方的Error不处理吗
    y浪淘沙y:这只是个demo:sweat: 不要做伸手党

本文标题:AFN的基本使用(上传和下载)

本文链接:https://www.haomeiwen.com/subject/spzrdttx.html