很多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上傳圖檔的過程,上傳其他檔案類型同理。