使用 AFMultipartFormData AFNetworking 3.0 上传图像
Posted
技术标签:
【中文标题】使用 AFMultipartFormData AFNetworking 3.0 上传图像【英文标题】:Image upload using AFMultipartFormData AFNetworking 3.0 【发布时间】:2017-01-26 11:53:28 【问题描述】:NSURL *URL = [NSURL URLWithString:@"some APi"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
UIImage *myImageObj = [UIImage imageNamed:@"avatar.jpg"];
NSData *imageData= UIImagePNGRepresentation(myImageObj);
[manager POST:URL.absoluteString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
[formData appendPartWithFileData:imageData
name:@"file"
fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
// etc.
progress:nil success:^(NSURLSessionDataTask *task, id responseObject)
NSLog(@"Response: %@", responseObject);
failure:^(NSURLSessionDataTask *task, NSError *error)
NSLog(@"Error: %@", error);
];
我正在尝试使用 afnetworking 3.0 上传图片,但每次都出现此错误
域=com.alamofire.error.serialization.response Code=-1011 "请求 失败:内部服务器错误 (500)” UserInfo=com.alamofire.serialization.response.error.response= URL: Some URL status 代码:500,标题 “访问控制允许来源”=“*”; “内容长度”= 291; “内容类型”=“文本/html”; 日期 =“格林威治标准时间 2017 年 1 月 26 日星期四 11:41:19”; 服务器 = "Werkzeug/0.11.11 Python/2.7.12"; ,
【问题讨论】:
见***.com/questions/39245470/… 【参考方案1】:幸运的是邮递员提供了 Objective-C 和一些其他语言的代码,但我使用了 AFNetworking 这个
NSURL *URL = [NSURL URLWithString:@"your URL"];
UIImage *myImageObj = [UIImage imageNamed:@"image.jpg"];
NSData *imageData= UIImageJPEGRepresentation(myImageObj, 0.6);
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//manager.responseSerializer=[AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
[manager POST:URL.absoluteString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
[formData appendPartWithFileData:imageData
name:@"file"
fileName:@"image.jpg" mimeType:@"image/jpeg"];
// etc.
progress:nil success:^(NSURLSessionDataTask *task, id responseObject)
NSLog(@"Response: %@", responseObject);
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);
failure:^(NSURLSessionDataTask *task, NSError *error)
NSLog(@"Error: %@", error);
];
【讨论】:
以上是关于使用 AFMultipartFormData AFNetworking 3.0 上传图像的主要内容,如果未能解决你的问题,请参考以下文章
Swift Package Manager 在使用 Almofire 时使用未解析的标识符“AF”
如何使用 af_imageAspectScaled 缩放到所需的像素大小
使用 AlamoFireImage 在 CollectionView 中使用 .af_setImage 方法加载数组 url 的致命错误