这里的图片上传用的是下面这个方法
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:@"http://www.xxx.com" parameters:para constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull 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;
imageData = UIImagePNGRepresentation(image);
if (!imageData) {
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:@"http://www.xxx.com" parameters:para constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull 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;
imageData = UIImagePNGRepresentation(image);
if (!imageData) {
imageData = UIImageJPEGRepresentation(image, 1.0f);
}
//这里要注意”name”里面的写法”photo”和”photo[]”。一张和多张的区别
[formData appendPartWithFileData:imageData name:@"photo[]" fileName:fileName mimeType:@"image/jpg/png/jpeg"];
i ++;
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
JDLog(@"%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
JDLog(@"%@", dict);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
i ++;
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
JDLog(@"%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
JDLog(@"%@", dict);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
这里要注意的是,上传一张图片和上传多张图片的区别,上传一张图片,图片的"name”里面是一个”photo”,而上传多张图片的时候,”name”里面的是一个数组,所以,里面要做一个小改动,要将里面的”photo”,后面加上一个中括号,”photo[ ]”,这样子,后台收到的图片就是一个数组,不是只有一张图片,如果是没有中括号,最后上传上去的图片是最后一张能收到。