利用AFN进行多图片上传

在写需求的时候,在AFN中找了很久都没有找到多图片上传的相关功能,但最后还是发现了利用参数拼接的原理,可以做多图片、带参数的上传。

话不多说,上代码:

- (void)uploadImageDictionary:(NSDictionary *)imageDictionary URLString:(NSString *)URLString  parameters:(id)parameters finished:(HHRequestCallBack)finished {
    [self POST:URLString parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        NSArray *keyArray = imageDictionary.allKeys;
        for (int i = 0; i<imageDictionary.count; i++) {
            NSString *fileName = [NSString stringWithFormat:@"%@.jpeg", keyArray[i]];
            NSData *imageData = [HHCommon provdeImage: imageDictionary[keyArray[i]]];
            [formData appendPartWithFileData:imageData name:keyArray[i] fileName:fileName mimeType:@"image/jpeg"];
        }
    } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        finished(responseObject, nil);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"网络请求错误 %@", error.localizedDescription);
        finished(nil, error);
    }];
    
}

+ (NSData *)provdeImage:(UIImage *)image
{
    NSData * imageData = UIImageJPEGRepresentation(image,1);
    
    CGFloat length = [imageData length]/1024;
    if (length > 1000) {
        return UIImageJPEGRepresentation(image,0.1);
    }
    return imageData;

}

参数:imageDictionary  key 为图片的参数key value 为图片

URLString 请求地址

parameters 参数字典

finished 回调block

第一个方法主要是一个对AFN的一个封装,在里面运用一个for循环遍历参数和值组成的字典,再拼接到请求里面。注意的是,这里我用的是图片,所以在拼接的时候用了

- (void)appendPartWithFileData:(NSData *)data
                          name:(NSString *)name
                      fileName:(NSString *)fileName
                      mimeType:(NSString *)mimeType

这个方法。这个主要好处就是可以对图片进行处理(第二个方法就是对图片进行压缩)。但是如果你不需要对图片进行处理,那么可以用这个方法

- (BOOL)appendPartWithFileURL:(NSURL *)fileURL
                         name:(NSString *)name
                     fileName:(NSString *)fileName
                     mimeType:(NSString *)mimeType
                        error:(NSError * __autoreleasing *)error

那么相应的你需要把  imageDictionary 的值换成图片的资源地址。
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值