很多iOS應用都會遇到需要上傳圖片的情況,比如修改個人資料時需要上傳自己的頭像,最近我也遇到了這種情況,首先參考之前寫過的AFNetWorking3.0處理請求頭和請求內容。
我們在上述博客的基礎之上進行修改,假設我們正在修改個人資料,裏面需要修改個人頭像和其他資料,用請求頭進行用戶識別,請求內容包括其他的個人資料。
首先是請求的URL,
NSString *url = @"your url";
接下來定義AFHTTPSessionManager,
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
設置相關的請求頭,通過requestSerializer來實現,可以根據自己的需求定義一個或者多個請求頭,
[manager.requestSerializer @"value1" forHTTPHeaderField:@"key1"];
[manager.requestSerializer @"value2" forHTTPHeaderField:@"key2"];
......
實現帶請求內容的POST方法,這裏一些文本性質的個人資料可以直接在parameters中進行設置,但是圖片需要另外處理,先將UIImage對象轉化成NSData對象,
NSData *imgData = UIImagePNGRepresentation(UIImage對象);
最後將圖片作爲請求的內容進行上傳,
[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上傳圖片的過程,上傳其他文件類型同理。