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