1. 程式人生 > >iOS Post上傳圖片, 文件流的形式

iOS Post上傳圖片, 文件流的形式

ssi 標準 請求 圖片服務器 dict html mimetype object 屬性

最近看到群裏很多小夥伴有問上傳圖片服務器收不到, 解析不了. 可以說就一個屬性 ContentType , 不論你使用第三方的AFN, 還是自己封裝NSURLSesstion. 都需要把ContentType 設置和後臺的解析方式一樣(可能術語不是很標準, 總之就這個意思哈,諒解)

下面貼一段AFN的上傳圖片代碼吧, 親測有效, 不過可能只是針對我的服務器. 只要和後臺同學溝通好就行了

  //此body是向後臺傳的參數, 因為是上傳圖片, 所以只給個圖片名就夠了, 這個和後臺去問

NSDictionary * body = @{@"category":@"user",@"file":@"HeadImg"};

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

//ContentType設置

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",

@"text/html",

@"image/jpeg",

@"image/png",

@"application/octet-stream",

@"text/json",

nil];

manager.requestSerializer= [AFHTTPRequestSerializer serializer];

manager.responseSerializer= [AFHTTPResponseSerializer serializer];

[manager POST:url parameters:body constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {

//把image 轉為data , POST上傳只能傳data

NSData *data = UIImagePNGRepresentation(image);

//上傳的參數(上傳圖片,以文件流的格式)

[formData appendPartWithFileData:data

name:@"file"

fileName:@"gauge.png"

mimeType:@"image/png"];

} progress:^(NSProgress * _Nonnull uploadProgress) {

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {

  //請求成功的block回調

NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

NSLog(@"上傳成功%@",dic);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"上傳失敗%@",error);

}];

* 如果覺得不夠過癮的iOS 妹子可以加QQ 751045314 ,阿偉不介意我們深入溝通哦,要demo留下QQ發郵箱

iOS Post上傳圖片, 文件流的形式