IOS开发-图片上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS开发-图片上传相关的知识,希望对你有一定的参考价值。

   目前ios端开发,图片上传到服务器分为两种,一种是直接上到服务器,一种是借助第三方储存(减少服务器压力)。

一、直接上传到服务器

 1         /**
 2          *  代码演示
 3          */
 4         //*******UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多,但从视角角度看,图片的质量没有明显的降低,所以在读取图片数据内容时,可以先使用UIImageJPEGRepresentation,且耗时短。
 5         //******将选中的图片压缩成二进制文件*******photo为UIImage实例
 6         NSData *data = UIImageJPEGRepresentation(photo, 0.5);
 7         //****** 从本地上传图片  先读入沙盒目录
 8          //****** 创建沙盒目录
 9         NSString *docomentpaths = [NSHomeDirectory() stringByAppendingPathComponent:@"docomentpaths"];
10         NSFileManager *manager = [NSFileManager defaultManager];
11         [manager createDirectoryAtPath:docomentpaths withIntermediateDirectories:YES attributes:nil error:nil];
12         //*****获取当前时间字符
13         NSString *timeStr = [NSString stringWithFormat:@"%@",[NSDate date]];
14         //*****读入沙盒目录下
15         [manager createFileAtPath:[docomentpaths stringByAppendingString:[NSString stringWithFormat:@"%@",timeStr]] contents:data attributes:nil];
16         //*****得到图片路径
17         NSString *filepath = [[NSString alloc]initWithFormat:@"%@%@",docomentpaths,timeStr];
18          //****** 得到本地的图片URL
19         NSURL *imageurl = [NSURL fileURLWithPath:filepath];
20         
 1  //****url服务器接口地址
 2     //使用AFN网络框架上传
 3     self.manager = [AFHTTPRequestOperationManager manager];
 4     [self.manager POST:url parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
 5         //         开始上传 formData提交
 6            [formData appendPartWithFileURL:imageurl name:@"ios_uploadImage" fileName:filepath mimeType:@"image/jpeg" error:nil];
 7                  }
 8 
 9         //      这里上传多张图片for循环提交
10         //        for (int i = 0; i<self.imagelist.count; i++)
11         //         {
12         //             [formData appendPartWithFileURL:self.iamgedata[i] name:@"heareuy" fileName:self.strlist[i] mimeType:@"image/jpeg" error:nil];
13         //         }
14         //
15         
16     } success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {
17         
18     } failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
19         
20     }];

二、上传到第三方服务器存储-七牛云存储

原来公司的项目也是上传到公司服务器上,但想着图片量会很大,随着图片量的增多,后期也是一个问题,所以我决定使用七牛云作为图片存储盘,过程其实是非常简单的。后台的伙伴们会在七牛上注册,实例化一个盘,在手机端上传时,后台会给一个从七牛获取到token。根据这个token手机端会把图片上传到七牛,上传成功后,七牛会返回一个图片的url,然后再将这个url给服务器,说白了,服务器只是保存手机端上传到七牛的地址。

代码演示待续。。。。。。。。。

 

以上是关于IOS开发-图片上传的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发教程 - 如何通过二进制数据上传图片

IOS开发教程 - 如何通过二进制数据上传图片

iOS开发之使用AFN上传图片

iOS开发通过AFNetworking上传图片到服务器

uniapp怎么实现选择和上传图片分开

【Android开发】怎么在ListView中做一个图片批量上传的队列