直接看代码
用AFNetWorking,原生也一样
- (void)uploadeImage:(UIImage *)image{
//1.创建manager
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
//2.上传文件
//参数1:网络请求路径
//参数2:参数列表(只能传一般的参数,不包括上传文件的文件对应的参数)
//(1.username 用户名(必选) 2.avatar 头像文件(必选))
NSString * path = @"https://xxxxxxxxxxxx服务器网址";
[manager POST:path parameters:@{@"username":@"957186794@qq.com"} constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//参数:要上传到服务器的文件的二进制数据的容器
//1.将需要上传的文件转换成二进制
//将图片转换成二进制的方法:
//a.将png图转换成二进制 UIImagePNGRepresentation -- 参数:想要转换的图片
//b.将jpg图片转换成二进制 UIImageJPEGRepresentation --参数1:图片 参数2:压缩比
NSData * imageData = UIImageJPEGRepresentation(image2, 0.0001);
// NSData * imageData = UIImagePNGRepresentation([UIImage imageNamed:@"luffy"]);
// NSLog(@"%@", imageData);
//将需要上传的文件给这个容器,然后manager会自动将formData传给服务器
//参数1:需要上传的文件
//参数2:文件在服务器上对应参数名(必须和服务器的参数对应)
//参数3:上传的文件在服务器上存储的名字(一般由服务器来决定)
//参数4:文件类型
[formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"失败");
}];
}