您的位置:首页 > 其它

AFNetworking 上传图片或文件

2016-01-22 16:40 288 查看
需要上传图片或文件,网络请求使用 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);

}];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息