切记,name:多文件上传时,name不能重复,否则会覆盖
- (void)postImg:(NSString *)url
params:(id)params
imageArr:(NSMutableArray *)imageArr
callback:(void(^)(id obj, NSError *error))callback {
//选择需要的解析格式
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer= [AFJSONResponseSerializer serializer];
[manager.requestSerializer setValue:kUser.token forHTTPHeaderField:@"Authorization"];
url = [URL_BASIC stringByAppendingString:url];
[manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//遍历图片数组
for (UIImage *image in imageArr) {
// 图片太大会上传不到服务器上面去
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);;
// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
// 要解决此问题,
// 可以在上传时使用当前的系统事件作为文件名
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置时间格式
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
/*
此方法参数
1. 要上传的[二进制数据]
2. 对应后台处理文件的[字段"files"](根据后台定义的字段名来)
3. 要保存在服务器上的[文件名]
4. 上传文件的[mimeType]
*/
[formData appendPartWithFileData:imageData name:@"files" fileName:fileName mimeType:@"image/jpg"];
}
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
callback(responseObject, nil);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
callback(nil, error);
}];
}