本文主要是介绍使用AFNetworking进行图片上传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种,哈哈哈),一种是以将图片加密转成字符串的形式,另一种是以文件流的形式进行上传。记得去年12月份在网上随便找了一下,可能是我太low,找了好久没找到。本来早就想总结一下,可是呢...我吧...懒得看AFNetworking源码,就一直搁置了,今天工作做完了,正好分享一下。
第一种方式:文件流方式进行上传
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
-
- 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,作为入参传入请求地址就可以了
- + (NSString *)imageBase64WithDataURL:(UIImage *)image
- {
- NSData *imageData =nil;
- NSString *mimeType =nil;
-
-
- 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]];
- }
这篇关于使用AFNetworking进行图片上传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!