AFNetworking 上传图片或文件

需要上传图片或文件,网络请求使用 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);
        
    }];
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值