总结
[formData appendPartWithFileData:fileData name:@"userfile[]" fileName:@"dengchao.jpg" mimeType:@"image/jpg"];
执行这个方法时, name:后台用来存储上传图片的文件夹名称, fileName则是>直接上传上去的图片, 注意一定要加 .jpg或者.png,(这个根据你得到这个>imgData是通过jepg还是png的方式来获取决定)。 然后mimeType值也要与>上面的类型对应, 网上看到有的说直接写成 @"image/*",
一、AFNetworking上传一张或多张图片
#pragma mark - 上传数据到服务器前将图片转data(上传服务器用form表单:)
- (void)submitToServer{
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"type"] = @"1";
params[@"uid"] = [USER_DEFAULT valueForKey:@"uid"];
params[@"cont"] = _noteTextView.text;
NSLog(@"----%@",params);
__block NSString *imgStr;
AFHTTPSessionManager *operation = [AFHTTPSessionManager manager];
operation.requestSerializer = [AFHTTPRequestSerializer serializer]; // 申明返回的结果是json类型
operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[operation POST:UPLOAD_IMG parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//根据当前系统时间生成图片名称
for (int i = 0; i<self.imageArray.count; i++) {
NSString *fileName = [NSString stringWithFormat:@"image%d.png",i];
UIImage *image = self.imageArray[i];
NSData *imageData;
imageData = UIImageJPEGRepresentation(image, 1.0f);
// imageData =UIImagePNGRepresentation(image);
[formData appendPartWithFileData:imageData name:@"dir" fileName:fileName mimeType:@"image/jpeg"];
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
/*上传成功后的处理
1、上传无图的
2、上传有图的
**/
NSLog(@"获取图片上传路径%@",responseObject);
imgStr = responseObject[@"url"];
if (!imgStr) {
[PPNetworkHelper setRequestSerializer:PPRequestSerializerHTTP];
[PPNetworkHelper POST:RELEASE parameters:params success:^(id responseObject) {
int code=[responseObject[@"code"] intValue];
NSLog(@"发布responseObject%@",responseObject);
if(code==1){
[MBManager showBriefAlert:@"发布成功"];
[self.navigationController popViewControllerAnimated:YES];
}
} failure:^(NSError *error) {
}];
}else{
[params setValue:imgStr forKey:@"imgs"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:@[imgStr] forKeys:@[@"imgs"]];
[params addEntriesFromDictionary:dic];
[PPNetworkHelper setRequestSerializer:PPRequestSerializerHTTP];
[PPNetworkHelper POST:RELEASE parameters:params success:^(id responseObject) {
int code=[responseObject[@"code"] intValue];
NSLog(@"发布responseObject%@",responseObject);
if(code==1){
[MBManager showBriefAlert:@"发布成功"];
[self.navigationController popViewControllerAnimated:YES];
}
} failure:^(NSError *error) {
}];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
}
二、PPNetworkHelper上传一张或多张图片
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"type"] = @"1";
params[@"uid"] = [USER_DEFAULT valueForKey:@"uid"];
params[@"cont"] = _noteTextView.text;
NSLog(@"----%@",params);
__block NSString *imgStr;
NSMutableDictionary * parame=[NSMutableDictionary new];
[PPNetworkHelper setRequestSerializer:PPRequestSerializerHTTP];
/**
* 上传单/多张图片
*
* @param URL 请求地址
* @param parameters 请求参数
* @param name 图片对应服务器上的字段
* @param images 图片数组
* @param fileNames 图片文件名数组, 可以为nil, 数组内的文件名默认为当前日期时间"yyyyMMddHHmmss"
* @param imageScale 图片文件压缩比 范围 (0.f ~ 1.f)
* @param imageType 图片文件的类型,例:png、jpg(默认类型)....
* @param progress 上传进度信息
* @param success 请求成功的回调
* @param failure 请求失败的回调
*
* @return 返回的对象可取消请求,调用cancel方法
*/
/*
[PPNetworkHelper uploadImagesWithURL:UPLOAD_IMG parameters:parame name:@"file" images:@[img] fileNames:@[@"file"] imageScale:0.5f imageType:@"image/1.jpeg" progress:^(NSProgress *progress) {
*/
//创建图片文件名数组:self.fileNameArr
for (int i=0; i<self.imageArray.count; i++) {
NSString *fileName = [NSString stringWithFormat:@"image%d.png",i];
[self.fileNameArr addObject:fileName];
}
//上传多张图片
[PPNetworkHelper uploadImagesWithURL:UPLOAD_IMG parameters:parame name:@"file" images:self.imageArray fileNames:self.fileNameArr imageScale:1.f imageType:@"image/1.jpeg" progress:^(NSProgress *progress) {
} success:^(id responseObject) {
imgStr = responseObject[@"url"];
NSLog(@"创建群组上传徽章%@",responseObject);
int error=[responseObject[@"error"] intValue];
if(error==0){
if (imgStr) {
[params setValue:imgStr forKey:@"imgs"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:@[imgStr] forKeys:@[@"imgs"]];
[params addEntriesFromDictionary:dic];
[PPNetworkHelper setRequestSerializer:PPRequestSerializerHTTP];
[PPNetworkHelper POST:RELEASE parameters:params success:^(id responseObject) {
int code=[responseObject[@"code"] intValue];
NSLog(@"发布responseObject%@",responseObject);
if(code==1){
[MBManager showBriefAlert:@"发布成功"];
[self.navigationController popViewControllerAnimated:YES];
}
} failure:^(NSError *error) {
}];
}else{
[PPNetworkHelper setRequestSerializer:PPRequestSerializerHTTP];
[PPNetworkHelper POST:RELEASE parameters:params success:^(id responseObject) {
int code=[responseObject[@"code"] intValue];
NSLog(@"发布responseObject%@",responseObject);
if(code==1){
[MBManager showBriefAlert:@"发布成功"];
[self.navigationController popViewControllerAnimated:YES];
}
} failure:^(NSError *error) {
NSLog(@"%@",error);
}];
}
}
} failure:^(NSError *error) {
NSLog(@"%@",error);
}];
}