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];  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM