zoukankan      html  css  js  c++  java
  • iOS_文件上传进度条的实现思路-AFNettworking

     

    iOS_文件上传进度条的实现思路-AFNettworking

    1. //要上传的文件名,在这里我使用当前日期做为文件的名称  
    2.       NSString * fileName =[NSString stringWithFormat:@"%ld", (long)[NSDatenew].timeIntervalSince1970];  
    3.       //要上传的文件   
    4.       NSData * data = [NSData dataWithContentsOfFile:[XXXXXXXX]];  
    5.           //下面的dic就是一些其他的参数,没有就不要了   
    6.             NSDictionary *dic = @{@"jsessionid": [User shareUser].sessionID,@"to":[UsershareUser].userID,@"fromUserId":self.toUserID,@"second":@((int)recorder.currentTime)};  
    7.         
    8.      // 接口的 AFHTTPSession 不能提供一种方法来设置进度块。相反,必须进行以下操作:  
    9.       // 1. 创建一个 `AFHTTPRequestSerializer`,利用此对象可以创建一个request请求.  
    10.       AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];  
    11.         
    12.       // 2. 获取一个`NSMutableURLRequest`对象.  
    13.       NSMutableURLRequest *request =  
    14.       [serializer multipartFormRequestWithMethod:@"POST"//请求方法为post  
    15.                                        URLString:@"http://xxx.xxx.xxx.xx"//上传文件URL  
    16.                                       parameters:dic//上传的其他参数  
    17.                        constructingBodyWithBlock:^(id<AFMultipartFormData> formData)//设置请求体  
    18.       {  
    19.                         [formData appendPartWithFileData:data//音乐媒体文件的data对象  
    20.                                                                   name:@"multipartFile"//与数据关联的参数名称,不能为nil  
    21.                                                               fileName:fileName//上传的文件名,不能为nil  
    22.                                                               mimeType:@"audio/mp4"];//MIME类型(例如:图片为image/jpeg.) 可以参照 http://www.iana.org/assignments/media-types/. ,不能为nil  
    23.       } error:&playerError];//playerError为错误对象  
    24.       // 3. 创建并使用 `AFHTTPRequestOperationManager`,然后创建一个异步请求操作对象`AFHTTPRequestOperation`,这个对象执行时会发送刚刚创建的`NSMutableURLRequest`请求.  
    25.       AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    26.       AFHTTPRequestOperation *operation =  
    27.       [manager HTTPRequestOperationWithRequest:request  
    28.                                        success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    29.                                            NSLog(@"Success %@", responseObject);//上传成功后的语句块  
    30.                                        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    31.                                            NSLog(@"Failure %@", error.description);//上传失败的语句块  
    32.                                        }];  
    33.         
    34.       // 4. 设置上传进度块.  
    35.       [operation setUploadProgressBlock:^(NSUInteger __unused bytesWritten,  
    36.                                           long long totalBytesWritten,//已上传的字节数  
    37.                                           long long totalBytesExpectedToWrite)//总字节数  
    38.       {  
    39.           //每次上传一部分数据,都会调用此块输出进度,可以在此方法中设置你的上传进度条页面  
    40.           NSLog(@"Wrote %lld/%lld", totalBytesWritten, totalBytesExpectedToWrite);  
    41.       }];  
    42.       //5. 开始上传任务  
    43.       [operation start];  
     
  • 相关阅读:
    设计模式-设计原则(Design Principle)
    设计模式-装饰者模式(Decorator Pattern)
    C++-copy constructor、copy-assignment operator、destructor
    cocos2dx3.0-tinyxml在Android环境下解析xml失败的问题
    XACML-条件评估(Condition evaluation),规则评估(Rule evaluation),策略评估(Policy evaluation),策略集评估(PolicySet evaluation)
    XACML-<Target> 元素的结构与相关的评估
    XACML-PolicySet与request结构简介
    从接口自动化测试框架设计到开发(八)--python操作数据库
    从接口自动化测试框架设计到开发(七)--cookie处理
    从接口自动化测试框架设计到开发(六)--持续集成jenkins
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/6862411.html
Copyright © 2011-2022 走看看