天天看點

AFNetWorking 3.0上傳圖檔

很多iOS應用都會遇到需要上傳圖檔的情況,比如修改個人資料時需要上傳自己的頭像,最近我也遇到了這種情況,首先參考之前寫過的AFNetWorking3.0處理請求頭和請求内容。

我們在上述部落格的基礎之上進行修改,假設我們正在修改個人資料,裡面需要修改個人頭像和其他資料,用請求頭進行使用者識别,請求内容包括其他的個人資料。

首先是請求的URL,

NSString *url = @"your url";
           

接下來定義AFHTTPSessionManager,

設定相關的請求頭,通過requestSerializer來實作,可以根據自己的需求定義一個或者多個請求頭,

[manager.requestSerializer @"value1" forHTTPHeaderField:@"key1"];
[manager.requestSerializer @"value2" forHTTPHeaderField:@"key2"];
......
           

實作帶請求内容的POST方法,這裡一些文本性質的個人資料可以直接在parameters中進行設定,但是圖檔需要另外處理,先将UIImage對象轉化成NSData對象,

最後将圖檔作為請求的内容進行上傳,

[manager POST:url
       parameters:@{
                    @"key1":@"value1",
                    @"key2":@"value2"
                    ......
                    }
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:imgData name:@"key3" fileName:@"avatar.png" mimeType:@"image/png"];
}
        progress:nil
         success:^(NSURLSessionTask *task, id responseObject) {
             NSLog("response:%@", responseObject);
             }
         }
         failure:^(NSURLSessionTask *task, NSError *error) {
             NSLog(@"error:%@", error);
         }];
           

通過以上過程就實作了利用AFNetWorking 3.0上傳圖檔的過程,上傳其他檔案類型同理。