zoukankan      html  css  js  c++  java
  • iOS之AFN文件上传(4)

    AFN文件上传

    • 1.文件上传拼接数据的第一种方式
    [formData appendPartWithFileData:data name:@"file" fileName:@"xxoo.png"mimeType:@"application/octet-stream"];
    
    • 2.文件上传拼接数据的第二种方式
     [formData appendPartWithFileURL:fileUrl name:@"file" fileName:@"xx.png" mimeType:@"application/octet-stream" error:nil];
    
    • 3.文件上传拼接数据的第三种方式
    [formData appendPartWithFileURL:fileUrl name:@"file" error:nil];
    

    文件上传相关的代码如

    -(void)upload1
    {
        //1.创建会话管理者
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
        //2.处理参数(非文件参数)
        NSDictionary *dict = @{
                               @"username":@"123"
                               };
    
        //3.发送请求上传文件
        /*
         第一个参数:请求路径(1.NSString类型,2.不包含?号3.不包含参数)
         第二个参数:非文件参数,以字典的方式传递
         第三个参数:constructingBodyWithBlock 在该回调中拼接文件参数
         第四个参数:progress 进度回调
            uploadProgress.completedUnitCount:已经上传的数据大小
            uploadProgress.totalUnitCount:数据的总大小
         第五个参数:success 请求成功的回调
            task:上传Task
            responseObject:服务器返回的响应体信息(已经以JSON的方式转换为OC对象)
         第六个参数:failure 请求失败的回调
            task:上传Task
            error:错误信息
         */
        [manager POST:@"http://120.25.226.186:32812/upload" parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
    
            UIImage *image = [UIImage imageNamed:@"Snip20160117_1"];
            NSData *imageData = UIImagePNGRepresentation(image);
    
            //在该block中拼接要上传的文件参数
            /*
             第一个参数:要上传的文件二进制数据
             第二个参数:文件参数对应的参数名称,此处为file是该台服务器规定的(通常会在接口文档中提供)
             第三个参数:该文件上传到服务后以什么名称保存
             第四个参数:该文件的MIMeType类型
             */
            [formData appendPartWithFileData:imageData name:@"file" fileName:@"123.png" mimeType:@"image/png"];
    
        } progress:^(NSProgress * _Nonnull uploadProgress) {
            NSLog(@"%f",1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    
            NSLog(@"请求成功----%@",responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    
            NSLog(@"请求失败----%@",error);
        }];
    }
    
    -(void)upload2
    {
        //1.创建会话管理者
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
        //2.处理参数(非文件参数)
        NSDictionary *dict = @{
                               @"username":@"123"
                               };
    
        //3.发送请求上传文件
        /*
         第一个参数:请求路径(NSString类型)
         第二个参数:非文件参数,以字典的方式传递
         第三个参数:constructingBodyWithBlock 在该回调中拼接文件参数
         第四个参数:progress 进度回调
            uploadProgress.completedUnitCount:已经上传的数据大小
            uploadProgress.totalUnitCount:数据的总大小
         第五个参数:success 请求成功的回调
            task:上传Task
            responseObject:服务器返回的响应体信息(已经以JSON的方式转换为OC对象)
         第六个参数:failure 请求失败的回调
            task:上传Task
            error:错误信息
         */
        [manager POST:@"http://120.25.226.186:32812/upload" parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
    
            NSURL *fileUrl = [NSURL fileURLWithPath:@"/Users/OnlyChenJ/Desktop/Snip20160117_1.png"];
    
    
            //在该block中拼接要上传的文件参数
            //第一种拼接方法
            /*
             第一个参数:要上传的文件的URL路径
             第二个参数:文件参数对应的参数名称,此处为file是该台服务器规定的(通常会在接口文档中提供)
             第三个参数:该文件上传到服务后以什么名称保存
             第四个参数:该文件的MIMeType类型
             第五个参数:错误信息,传地址
             */
            //[formData appendPartWithFileURL:fileUrl name:@"file" fileName:@"1234.png" mimeType:@"image/png" error:nil];
    
    
            //第二种拼接方法:简写方法
            /*
             第一个参数:要上传的文件的URL路径
             第二个参数:文件参数对应的参数名称,此处为file
             第三个参数:错误信息
             说明:AFN内部自动获得路径URL地址的最后一个节点作为文件的名称,内部调用C语言的API获得文件的类型
             */
            [formData appendPartWithFileURL:fileUrl name:@"file" error:nil];
    
        } progress:^(NSProgress * _Nonnull uploadProgress) {
            NSLog(@"%f",1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    
            NSLog(@"请求成功----%@",responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    
            NSLog(@"请求失败----%@",error);
        }];
    }
    
  • 相关阅读:
    第四周课下作业
    # 20165206 2017-2018-2 《Java程序设计》第4周学习总结
    20165206 2017-2018-2 《Java程序设计》第三周学习总结
    20165206 2017-2018-2 《Java程序设计》第二周学习总结
    第一周学习总结
    20165206 预备作业3 Linux安装及学习
    20165206学习基础和C语言基础调查
    20165206 我期望的师生关系
    channelartlist标签调用实例
    dede如何按自己写的ID进行排序
  • 原文地址:https://www.cnblogs.com/chenjianjian/p/5389782.html
Copyright © 2011-2022 走看看