服务器显示多张图片,上传多张图片到服务器

我封装的使用AFNetworking上传多图的一个方法。带进度条回调,希望对你用帮助,我app中亲测可用,不知道你的服务器是如何接收数据的:

声明:

/**

*  上传带图片的内容,允许多张图片上传(URL)POST

*

*  @param url                 网络请求地址

*  @param images              要上传的图片数组(注意数组内容需是图片)

*  @param parameter           图片数组对应的参数

*  @param parameters          其他参数字典

*  @param ratio               图片的压缩比例(0.0~1.0之间)

*  @param succeedBlock        成功的回调

*  @param failedBlock         失败的回调

*  @param uploadProgressBlock 上传进度的回调

*/

+(void)startMultiPartUploadTaskWithURL:(NSString *)url

imagesArray:(NSArray *)images

parameterOfimages:(NSString *)parameter

parametersDict:(NSDictionary *)parameters

compressionRatio:(float)ratio

succeedBlock:(void(^)(id operation, id responseObject))succeedBlock

failedBlock:(void(^)(id operation, NSError *error))failedBlock

uploadProgressBlock:(void(^)(float uploadPercent,long long totalBytesWritten,long long totalBytesExpectedToWrite))uploadProgressBlock;

实现:

+(void)startMultiPartUploadTaskWithURL:(NSString *)url

imagesArray:(NSArray *)images

parameterOfimages:(NSString *)parameter

parametersDict:(NSDictionary *)parameters

compressionRatio:(float)ratio

succeedBlock:(void (^)(id, id))succeedBlock

failedBlock:(void (^)(id, NSError *))failedBlock

uploadProgressBlock:(void (^)(float, long long, long long))uploadProgressBlock{

if (images.count == 0) {

NSLog(@"上传内容没有包含图片");

return;

}

for (int i = 0; i < images.count; i++) {

if (![imagesisKindOfClass:[UIImage class]]) {

NSLog(@"images中第%d个元素不是UIImage对象",i+1);

return;

}

}

AFHTTPRequestOperation *operation = [[self sharedOperation].operationManager POST:url parameters:parameters constructingBodyWithBlock:^(id formData) {

int i = 0;

//根据当前系统时间生成图片名称

NSDate *date = [NSDate date];

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

[formatter setDateFormat:@"yyyy年MM月dd日"];

NSString *dateString = [formatter stringFromDate:date];

for (UIImage *image in images) {

NSString *fileName = [NSString stringWithFormat:@"%@%d.png",dateString,i];

NSData *imageData;

if (ratio > 0.0f && ratio < 1.0f) {

imageData = UIImageJPEGRepresentation(image, ratio);

}else{

imageData = UIImageJPEGRepresentation(image, 1.0f);

}

[formData appendPartWithFileData:imageData name:parameter fileName:fileName mimeType:@"image/jpg/png/jpeg"];

}

} success:^(AFHTTPRequestOperation *operation, id responseObject) {

succeedBlock(operation,responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"%@",error);

failedBlock(operation,error);

}];

[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {

CGFloat percent = totalBytesWritten * 1.0 / totalBytesExpectedToWrite;

uploadProgressBlock(percent,totalBytesWritten,totalBytesExpectedToWrite);

}];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值