使用AFNetworking进行图片上传
2017-08-29 13:16
281 查看
项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种,哈哈哈),一种是以将图片加密转成字符串的形式,另一种是以文件流的形式进行上传。记得去年12月份在网上随便找了一下,可能是我太low,找了好久没找到。本来早就想总结一下,可是呢...我吧...懒得看AFNetworking源码,就一直搁置了,今天工作做完了,正好分享一下。
第一种方式:文件流方式进行上传
[objc] view
plain copy
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//接收类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",
@"text/html",
@"image/jpeg",
@"image/png",
@"application/octet-stream",
@"text/json",
nil nil];
NSURLSessionDataTask *task = [managerPOST:urlparameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *imageData =UIImageJPEGRepresentation(image,1);
NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
formatter.dateFormat =@"yyyyMMddHHmmss";
NSString *str = [formatterstringFromDate:[NSDatedate]];
NSString *fileName = [NSStringstringWithFormat:@"%@.jpg", str];
//上传的参数(上传图片,以文件流的格式)
[formData appendPartWithFileData:imageData
name:@"file"
fileName:fileName
mimeType:@"image/jpeg"];
} progress:^(NSProgress *_Nonnull uploadProgress) {
//打印下上传进度
} success:^(NSURLSessionDataTask *_Nonnull task,id _Nullable responseObject) {
//上传成功
} failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {
//上传失败
}];
第二种方式:将image转成NSData,在进行base64加密,此处代码是借鉴朋友博客中写的,就是一个加密过程,不一定非要这么写,只要将image对象传承NSData类型,然后在进行base64加密就可以了。将此处得到的返回值NSString,作为入参传入请求地址就可以了
[objc] view
plain copy
+ (NSString *)imageBase64WithDataURL:(UIImage *)image
{
NSData *imageData =nil;
NSString *mimeType =nil;
//图片要压缩的比例,此处100根据需求,自行设置
CGFloat x =100 / image.size.height;
if (x >1)
{
x = 1.0;
}
imageData = UIImageJPEGRepresentation(image, x);
mimeType = @"image/jpeg";
return [NSStringstringWithFormat:@"data:%@;base64,%@", mimeType,
[imageData base64EncodedStringWithOptions:0]];
}
第一种方式:文件流方式进行上传
[objc] view
plain copy
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//接收类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",
@"text/html",
@"image/jpeg",
@"image/png",
@"application/octet-stream",
@"text/json",
nil nil];
NSURLSessionDataTask *task = [managerPOST:urlparameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *imageData =UIImageJPEGRepresentation(image,1);
NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
formatter.dateFormat =@"yyyyMMddHHmmss";
NSString *str = [formatterstringFromDate:[NSDatedate]];
NSString *fileName = [NSStringstringWithFormat:@"%@.jpg", str];
//上传的参数(上传图片,以文件流的格式)
[formData appendPartWithFileData:imageData
name:@"file"
fileName:fileName
mimeType:@"image/jpeg"];
} progress:^(NSProgress *_Nonnull uploadProgress) {
//打印下上传进度
} success:^(NSURLSessionDataTask *_Nonnull task,id _Nullable responseObject) {
//上传成功
} failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {
//上传失败
}];
第二种方式:将image转成NSData,在进行base64加密,此处代码是借鉴朋友博客中写的,就是一个加密过程,不一定非要这么写,只要将image对象传承NSData类型,然后在进行base64加密就可以了。将此处得到的返回值NSString,作为入参传入请求地址就可以了
[objc] view
plain copy
+ (NSString *)imageBase64WithDataURL:(UIImage *)image
{
NSData *imageData =nil;
NSString *mimeType =nil;
//图片要压缩的比例,此处100根据需求,自行设置
CGFloat x =100 / image.size.height;
if (x >1)
{
x = 1.0;
}
imageData = UIImageJPEGRepresentation(image, x);
mimeType = @"image/jpeg";
return [NSStringstringWithFormat:@"data:%@;base64,%@", mimeType,
[imageData base64EncodedStringWithOptions:0]];
}
相关文章推荐
- iOS - 使用AFNetworking进行图片上传
- 使用AFNetworking进行图片上传
- 如何使用AFNetworking进行上传图片
- iOS - 使用AFNetworking进行图片上传
- OC - 使用AFNetworking进行图片上传
- 使用MultipartEntity对文字、图片、视频进行综合上传
- 记一次图片存储方式的修改(使用wcf和iis进行图片的上传和发布)
- 使用Spring MVC对KindEditor进行图片/Flash上传
- Java 使用imgAreaSelect插件进行图片上传切割
- iOS使用AFNetworking上传图片或者文件
- Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传
- 使用AFNetWorking 上传图片
- 使用AFNetworking上传多组图片时遇到的error
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)
- 使用swfUpload进行批量上传图片
- AFNetworking简单使用起来进行下载图片
- AFNetworking简单使用起来进行下载图片
- 使用AFNetworking上传图片
- 使用MultipartEntity对文字、图片、视频进行综合上传