最简单的实现方式上传图片

//在调用相机中获取图片  
[manager POST:naurl parameters:requestParms constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// 设置时间格式(给个时间便于区分)
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@%d",str,i];
//要上传的文件(用个循环传多张)
/**
*    data 将图片转换成data    NSData *data=UIImagePNGRepresentation(image);
*    name 服务器接受的name   两种格式1.数组,直接file可以穿多个进去  2.服务器端是键值 只能写file1 file2(看服务器的接受)
*    filename 随意写
*    mimeType 百度mime 看图片格式对应的mime
*/
[formData appendPartWithFileData:data name:[NSString stringWithFormat:@"file%d",i+1] fileName:fileName mimeType:@"image/png"];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];

淘宝,天猫,酒店等App,都牵涉到对其中提供的服务评分的功能。今天先从上传图片开始说起,一般创业型的公司,自己公司的服务器实现存储和处 理主业务逻辑。其他服务包括云推送和云存储数据都是存放在第三方提供的服务器中。当我们上传图片等信息的时候,存放在第三方平台中,在上传的时候获取 hash或者key作为该用户上传的唯一标示符。然后当App需要展示数据的时候就需要让自己公司的服务器根据唯一标示,去请求第三方平台,将请求的数据 拉取到公司服务器中。然后公司服务器将数据发送给客户端。这就是大体的图片上传和图片获取。

       公司采用的是第三方云储存。本来是又拍云,后来经过讨论决定使用七牛。本人以前没有做过这方面的研究。所以你懂得,到处都是坑。也是遇见问题解决问题,总算一个一个给解决了。
其实最坑的还是七牛的官方文档,有兴趣可以去看看,自己集成一下。现编展示一下写到现在,能够实现的效果吧。
    之后展示一些提交到七牛服务器的成功图片:
         在这里需要注意的地方是,图片的上传使用GCD异步线程的方法。
这里贴出一部分代码:仅供参考:

#pragma mark -上传图片到七牛服务器

- (void)uploadImage{

//give token

//请求服务器的临时uPtoken

NSString *str=[NSString stringWithFormat:@"http://weixin2.imike.cn/qiniu/uptoken"];

NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSURLRequest *requests = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *operations = [[AFHTTPRequestOperationalloc]initWithRequest:requests];

[operations setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, idresponseObject){

id dict=[NSJSONSerialization  JSONObjectWithData:responseObject options:0 error:nil];

//            NSLog(@"获取到的数据为:%@",dict);

NSLog(@"%@",dict[@"uptoken"]);

//        _token = dict[@"uptoken"];

_token = [NSString stringWithFormat:@"%@",dict[@"uptoken"]];

}failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"发生错误!%@",error);

}];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[queue addOperation:operations];

_dataArray = [[NSMutableArray alloc]init];

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

_dataSource = appDelegate.sourceArray;

for (UIImage *imageView in _dataSource) {

#pragma mark -此时如果重新选择,那么需要将会上传两次选择的图片

//        NSLog(@"%@",_dataSource);

if (UIImagePNGRepresentation(imageView)) {

//返回为png图像。

_data = UIImagePNGRepresentation(imageView);

}else {

//返回为JPEG图像。

_data = UIImageJPEGRepresentation(imageView, 1.0);

}

[_dataArray addObject:_data];

}

//这里考虑使用异步线程上传图片的方法

[self initConcurrent];

}

-(long long)getRandomNumber:(long long )from to:(long long )to

{

return (long long)(from + (arc4random() % (to-from + 1)));

}

//并行队列

- (void)initConcurrent{

//创建出队列

GCDGroup *group = [[GCDGroup alloc]init];

GCDQueue  *queue = [[GCDQueue alloc]initConcurrent];

for (int i = 0; i < _dataArray.count; i++) {

[queue execute:^{

QNUploadManager *upManager = [[QNUploadManager alloc] init];

[upManager putData:[_dataArray objectAtIndex:i] key:[NSStringstringWithFormat:@"iOS上传图片组%1lld",[self getRandomNumber:1 to:11111111111111111]]token:_token

complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {

NSLog(@"%@", info);

NSLog(@"%@", resp);

} option:nil];

} inGroup:group];

}

}

一个成功的App,需要考虑的因素有太多。

iOS-图片上传(第三方服务器)实现图片的上传和获取相关推荐

  1. ios 拍照上传到服务器_ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案...

    1.可以通过前端进行解决,本案例通过后端解决的 判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转 重点来了: 必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图 ...

  2. 激活时显示图片上传资源服务器失败,720全景图上传时提示“切图失败”的处理办法...

    前段时间服务器被攻击,之前的网站都受到影响.全景系统也是如此,重新搞了之后总感觉不如之前的好用,早上在测试的时候,在后台上传素材,页面提示"切图失败",然后就卡在服务器处理页面不动 ...

  3. Java服务器上显示图片问题_java,_服务器读取图片到jsp显示问题,java - phpStudy

    服务器读取图片到jsp显示问题 我要从服务器读个图片显示到jsp jsp页面 后台 @RequestMapping(value = "getPic", method = Reque ...

  4. springboot+shiro框架中上传到服务器的图片不能查看,访问404

    1.在application.properties文件中配置静态资源映射路径 #上传成功后的图片可以通过IP+端口/upload/图片名称进行访问 spring.mvc.static-path-pat ...

  5. 网站上传到服务器mysql数据库,网站上传到服务器mysql数据库吗

    网站上传到服务器mysql数据库吗 内容精选 换一换 安装MySQL本文档以"CentOS 6.5 64bit(40GB)"操作系统为例,对应MySQL版本为5.1.73.Cent ...

  6. 怎么把数据文件上传云服务器,怎么把数据上传导云服务器

    怎么把数据上传导云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装数 ...

  7. 网站设计好怎么上传到服务器的,虚拟主机上传到网站的几个步骤

    虚拟主机怎么上传到网站?站长们可以利用专业的软件协助自己上传,比如专业的ftp软件,具备支持续点相传,上传,以及下载目录等等,不会将限制过长的网站剔除,还可以下载列队,可以长传到本地,显示隐形软件,或 ...

  8. 怎么把数据文件上传云服务器,怎样把数据上传到云服务器

    怎样把数据上传到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装数 ...

  9. php文件如何上传到服务器,php文件怎么上传到云服务器

    php文件怎么上传到云服务器 内容精选 换一换 当服务器A和服务器B同时挂载同一文件系统C时,在服务器A上传文件,服务器B同步此文件时存在延时,而单独上传至服务器B则没有延时.需要在两个服务器的挂载参 ...

最新文章

  1. ELK不香了?企业级日志平台后起之秀 Graylog
  2. mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据
  3. 12个 Linux 中 grep 命令的超级用法实例
  4. ai圆角插件_【干货满满】AI软件技巧排版所需
  5. mysql权限系统的工作原理_Mysql权限系统工作原理
  6. ubuntu linux本地源,如何制作UbuntuLinux操作系统的本地源?
  7. 通过Java代码浅谈HTTP协议
  8. xhr请求python_Python爬虫进阶必备!关于某电商网站的加密请求头!
  9. SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测
  10. iconfont字体图标的使用方法
  11. varnish的了解与常用配置使用
  12. apl脚本入门-控制语句
  13. linux系统下memcached启动正常但程序无法连接的问题解决
  14. Linux特殊符号浅谈
  15. vue中的传参的两种方式
  16. python 协程进阶
  17. MAC安装linux双系统
  18. Vscode 远程连接出现Could not establish connection to
  19. Java将Word转为图片完美解决方案(免费无损不乱码)
  20. IC、FPGA验证学习

热门文章

  1. eve-ng模拟思科交换机镜像与日志配置实验
  2. 数据挖掘项目_挖掘社区项目
  3. 手把手教你快速将DUBBO开发框架的系统SAAS化
  4. CTRL+C复制和CTRL+V粘贴键不能使用的解决办法
  5. 作品展示网站——2019暑假答辩
  6. openwrt配置内核驱动_为斐讯K2P编译OpenWRT LEDE,并启用mtk闭源wifi驱动及H3C认证
  7. 计算机网络技术的英语怎么说,计算机网络技术,Computer network technology,音标,读音,翻译,英文例句,英语词典...
  8. ubuntu22.04系统cp2102驱动USB端口占用问题解决
  9. Java实现员工管理系统
  10. 终于把mt6771的ahd转mipi的yuv摄像头搞定了。