你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 利用AFNetworking上傳文件

利用AFNetworking上傳文件

編輯:IOS開發綜合

 A.networking是我們在日常開發中,常用於發送網絡請求的第三方類庫。其中,我們經常用到的方法有兩類,一是普通的網絡請求,其常用方法為:
 

//GET請求  
- (AFHTTPRequestOperation *)GET:(NSString *)URLString  
                     parameters:(id)parameters  
                        success:(void (^)(AFHTTPRequestOperation *operation, id responSEObject))success  
                        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure  
//POST請求  
- (AFHTTPRequestOperation *)POST:(NSString *)URLString  
                      parameters:(id)parameters  
                         success:(void (^)(AFHTTPRequestOperation *operation, id responSEObject))success  
                         failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure  

 對此,我不多說,相信大家都會,第二類就是我要重點說的上傳文件的網絡請求,跟普通的網絡請求方法十分相似:
 

[objc] view plain copy 在CODE上查看代碼片派生到我的代碼片
- (AFHTTPRequestOperation *)POST:(NSString *)URLString  
                      parameters:(id)parameters  
       constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block  
                         success:(void (^)(AFHTTPRequestOperation *operation, id responSEObject))success  
                         failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure  

這個方法中多了一個block匿名函數,它會在網絡請求發送之前調用,我們要添加所需上傳圖片的數據,就要在這裡進行,如:

//設置網絡請求管理者  
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
   //發送網絡請求  
   [manager POST:url parameters:paramsDic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
     for (int i = 0; i < self.imageArr.count; i++) {  
       UIImage *image = self.imagArr[i];  
       NSData *data = UIImagePNGRepresentation(image);  
       [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"photos[%d]",i] fileName:[NSString stringWithFormat:@"image%d.png",i] mimeType:@"image/png"];  
     }  
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {  

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  

    }];  

注意:

  1、name:多文件上傳時,name不能重復,不能重復,不能重復,重要的事情說三遍,我就是在這裡卡住了,當時我的接口文檔中讓我傳的參數是“photos[]”,結果我真的傻乎乎的只傳了一個“photos[]”,其結果就是只有一張圖片上傳成功,這也體現了交流的重要性,至於具體怎麼傳,接口文檔一般都有說明,如不清楚,請與後台人員溝通,這是服務器用於接收你所上傳文件的參數名,十分重要。

  2、fileName:不能重復,這個名字由用戶決定,只要不重復,其它沒有要求。

  3、mimeType:你所要上傳文件的類型,各種文件所對應的類型詳情請自己百度。

  上傳圖片一般會與相冊與照相機結合使用,但是其圖片一般較大,可使用UIImageJPEGRepresentation(image, 0.1)方法對圖片進行一定程度的壓縮,具體壓縮情況要結合你的實例。作一點說明:UIImagePNGRepresentation(image)與UIImageJPEGRepresentation(image, 0.1)方法都會返回圖片的data數據,如果將data數據轉化成圖片,圖片類型由後綴名決定,如果保存為.png後綴的圖片,就是png圖片,如果保存為.jpg後綴的圖片,則就是jpg圖片,故不要被方法名中的PNG和JPEG所影響。

  最後,提醒一下大家:有時候你可能碰到上傳圖片的網絡請求失敗,從而會懷疑自己是不是用錯了方法,如果你的文件上傳是利用multipart/form-data請求上傳,則使用上述方法是沒有錯的,這時你需要與你的後台成員多進行溝通,因為錯的並不一定是你,自信一點。

以上就是利用A.networking上傳文件的全文介紹,希望對您學習和使用IOS應用開發有所幫助.

【利用AFNetworking上傳文件】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved