第一种:以文件流的形式上传图片。
formDate 设置数据name:@“改为传给后台的参数名”
AFHTTPSessionManager *manager = [AFHTTPSessionManager
manager];
//接收类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"application/json",
@"text/html",
@"image/jpeg",
@"image/png",
@"application/octet-stream",
@"text/json",
nil];
//AppDelegate *myDelegate = (AppDelegate*)[[UIApplication
sharedApplication]
delegate];
// NSDictionary *dic =
@{@"id":myDelegate.userId};
NSURLSessionDataTask *task = [manager
POST:url parameters:dic
constructingBodyWithBlock:^(id<AFMultipartFormData>
_Nonnull formData) {
NSData *imageDatas = imageData;
NSDateFormatter *formatter = [[NSDateFormatter
alloc]
init];
formatter.dateFormat =
@"yyyyMMddHHmmss";
NSString *str = [formatter
stringFromDate:[NSDate
date]];
NSString *fileName = [NSString
stringWithFormat:@"%@.jpg", str];
//上传的参数(上传图片,以文件流的格式)
[formData appendPartWithFileData:imageDatas
name:@"photo"
fileName:fileName
mimeType:@"image/jpeg"];
} progress:^(NSProgress *
_Nonnull uploadProgress) {
//打印下上传进度
NSLog(@"上传进度");
NSLog(@"%@",uploadProgress);
} success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
//上传成功
NSLog(@"上传成功");
NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
//上传失败
NSLog(@"上传失败");
}];
第二种:将image转成NSData,在进行base64加密上传。
//获取照片的代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info {
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
UIImage *image = [[UIImage
alloc] init];
if ([mediaType
isEqualToString:@"public.image"]){
image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[_headimage
setImage:image];
// [_changeBtn setImage:image forState:UIControlStateNormal];
NSData *data;
if (UIImagePNGRepresentation(image) ==
nil) {
data = UIImageJPEGRepresentation(image,
1);
} else {
data = UIImageJPEGRepresentation(image,
0.001); //压缩图片,方便上传
}
// //获取文件路径
NSString *imageString = [data base64EncodedStringWithOptions:0];
转成base64字符串imageString,再传给给后台,在传参中需要添加图片的类型(@“png”或@“jpg”等)}
[picker dismissViewControllerAnimated:YES completion:nil];
}