需要上传图片或文件,网络请求使用 POST 请求. 具体代码如下:
/*
参数1: 请求地址
参数2,3: 需要上传的图片文件
参数4: 其他参数(字典)
参数5: block 回调
*/
+ (void)uploadImageWithUrl:(NSString *)url
logoImage:(UIImage *)logoImage
bannerImage:(UIImage *)bannerImage
params:(NSDictionary *)params
finish:(void (^)(NSData *,NSDictionary *obj, NSError *))cb
{
// afnetworking 请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// 压缩
NSData *logoImageData = UIImageJPEGRepresentation(logoImage, 1.0);
NSData *bannerImageData = UIImageJPEGRepresentation(bannerImage, 1.0);
// 生成文件名(这里获取当前时间)
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
// 拼接字符串
NSString *logoFileName = [NSString stringWithFormat:@"%@logo.jpg", str];
NSString *bannerFileName = [NSString stringWithFormat:@"%@banner.jpg", str];
// 上传图片,以文件流的格式
[formData appendPartWithFileData:logoImageData name:@"store_label" fileName:logoFileName mimeType:@"image/jpeg"];
/*
请求的时候需要将文件转化成 data
参数1: data 文件
参数2: 上传的属性名称, 需要和后台沟通
参数3: 文件名(最好保证唯一)
参数4: data 类型
*/
[formData appendPartWithFileData:bannerImageData name:@"store_banner" fileName:bannerFileName mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
// 成功
NSDictionary *obj = (NSDictionary *)responseObject;
cb(responseObject, obj, nil);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// 失败
cb(nil, nil, error);
}];
}