afn 上传多张图片 php,iOS利用AFNetworking上传多张图片(含多层嵌套)

项目中需要上传多张图片,并且嵌套多层图片数组上传,看了AF的底层还有网上的一些Post请求,复习了下系统的请求类,上传图片就是将图片转化成二进制流然后放入HTTPBody中发送到服务器,如果是嵌套,只需要注重name属性对应即可,name即为key,废话不多说,下面开始上代码

AFHTTPSessionManager *manager = [NetWorkingHelper createAFHTTPSessionManager];

[manager POST:@"postURL"parameters:parameters constructingBodyWithBlock:^(id _Nonnull formData) {

//压缩-添加-上传图片

//遍历你的第一层图片请求数组

[self.imagesArr enumerateObjectsUsingBlock:^(UIImage * _Nonnull image, NSUInteger idx, BOOL * _Nonnull stop) {

//压缩图片转化为data,第一个参数是图片,第二个参数是压缩系数

NSData *imageData = UIImageJPEGRepresentation(image, 1.0);

//添加转化后的data到body中

//data:转化后的imageData

//name:服务器需要的标识,服务器根据这个来取图片流,类似parameters里面的key

//fileName:服务器保存的图片名字,base64加密后更佳 (如有不对欢迎指出 )

//mimeType:图片类型,一般为@"image/jpeg"固定格式,特殊可添加其他格式

[formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"image[%ld]",idx] fileName:[NSString stringWithFormat:@"%@%lu.jpeg",@"planImage",(unsigned long)idx]mimeType:@"image/jpeg"];

}];

//这里上传嵌套的图片,比如你请求类第一层里面有数组包含第二层,第二层里面有图片数组或依次类推,都只需按对应的name(key)来上传即可,如图片需要绑定其他参数要转化成data放在这里面一起上传

[self.imageArray enumerateObjectsUsingBlock:^(NSArray* _Nonnull obj, NSUInteger idxs, BOOL * _Nonnull stop) {

//压缩-添加-上传图片

[self.imageArray[idxs] enumerateObjectsUsingBlock:^( UIImage*_Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

NSData *imageData = UIImageJPEGRepresentation(obj, 1.0);

[formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"list[%ld].images[%ld].image",idxs,idx] fileName:[NSString stringWithFormat:@ "%@%lu.jpeg",@"picDTOImage",(unsigned long)idx]mimeType:@"image/jpeg"];

NSData *strData = [@"2" dataUsingEncoding:NSUTF8StringEncoding];

[formData appendPartWithFormData:strData name:[NSString stringWithFormat:@"list[%ld].images[%ld].type",idxs,idx]];

}];

}];

} progress:^(NSProgress * _Nonnull uploadProgress) {

//上传进度

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

}];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值