最近公司的项目涉及到图片的保存,基于大量图片放在本地服务器会给公司增加不小的压力,所以选择了云存储,对比之后选择了七牛。
七牛的官方文档实在是太过于简单,下载SDK之后,根据官方 给的Demo,成功上传了图片。只是token的生成过程有些波折。
由于七牛官方不提倡在客户端生成Token,所以没有给出相应的iOS端生成Token的代码。多方查找资料之后自己写了一个本地生成Token的方法如下:

有了token之后就引入SDK,如下操作即可实现上传:

一开始很纳闷,从放回信息中没有找到我们上传成功之后需要的图片的外链接地址,查阅官方文档之后才明白外链接地址需要我们自己拼接。首先,成功之后返回的resp是:
resp {
hash = "FhweZwfJipE4P0K6Mm_QbC6P0dxW";
key = zx12;
}
如果失败resp为nil,所以图片的外链接地址就是你的 域名/key(返回的key)
网友评论
这时为啥呢
2017-02-17 12:56:18.012 PskgCommercialCity[5096:145930] 失败
2017-02-17 12:56:19.796 PskgCommercialCity[5096:145930] info ===== <QNResponseInfo= id: 557CF907-3307-447C-BB48-BDF7E349BBEE, ver: 7.1.5, status: 400, requestId: cAYAAIu2j2gD-qMU, cAYAAIu2j2gD-qMU, xlog: body;UP:1/400;UP:3/400, xvia: (null), host: upload.qiniu.com ip: 115.231.183.168 duration: 0.266951 s time: 1487307194 error: Error Domain=qiniu.com Code=400 "(null)" UserInfo={error=incorrect region, please use up-z2.qiniu.com}>
Connection = "keep-alive";
"Content-Length" = 57;
"Content-Type" = "text/html";
Date = "Thu, 24 Nov 2016 02:28:36 GMT";
Server = "NWS_TCloud_S1";
"X-Cache-Lookup" = "Hit From 404 Cache";
} }, NSErrorFailingURLKey=http://www.qiniu.com/v1/ip, com.alamofire.serialization.response.error.data=<54686520 72657175 65737465 64205552 4c20272f 76312f69 70272077 6173206e 6f742066 6f756e64 206f6e20 74686973 20736572 7665722e 0a>, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}}, 怎么解决哦
2017-02-17 12:56:18.012 PskgCommercialCity[5096:145930] 失败
2017-02-17 12:56:19.796 PskgCommercialCity[5096:145930] info ===== <QNResponseInfo= id: 557CF907-3307-447C-BB48-BDF7E349BBEE, ver: 7.1.5, status: 400, requestId: cAYAAIu2j2gD-qMU, cAYAAIu2j2gD-qMU, xlog: body;UP:1/400;UP:3/400, xvia: (null), host: upload.qiniu.com ip: 115.231.183.168 duration: 0.266951 s time: 1487307194 error: Error Domain=qiniu.com Code=400 "(null)" UserInfo={error=incorrect region, please use up-z2.qiniu.com}>
info <QNResponseInfo= id: 2B473295-2AB0-4F9E-B914-100E7E259297, ver: 7.0.16, status: 401, requestId: dAsAANOr0IwrMX8U, dAsAANOr0IwrMX8U, xlog: body;UP/401;UP:5/401, xvia: 1.1 shuangxian144:4 (Cdn Cache Server V2.0), 1.1 fwt16:2 (Cdn Cache Server V2.0), host: upload.qiniu.com ip: 60.10.3.48 duration: 12.191737 s time: 1476953264 error: Error Domain=qiniu.com Code=401 "(null)" UserInfo={error=bad token}>
我是从服务器接token但是一直上传不上去才想自己生成token试一下的 但是也失败
用服务器的token一直报错400
info ===== <QNResponseInfo= id: FCCE6BEE-F90B-4AB1-A4F8-3A0BC79D0E6B, ver: 7.1.1, status: 200, requestId: uSQAAAus8tIzUH4U, uSQAAAus8tIzUH4U, xlog: s.ph;s.put.tw:25;s.put.tr:609;s.put.tw:26;s.put.tr:390;s.ph;PFDS:428;PFDS:649;rdb.g/no such key;DBD/404;v4.exist/Document not found;rs24_12.ins;qtbl.ins:1;mc.s;RS:2;rs.put:7;rs-upload.putFile:658;UP:862;UP:880, xvia: (null), host: upload.qiniu.com ip: 115.231.97.59 duration: 33.580155 s time: 1476705912 error: (null)>
2016-10-17 20:05:12.190 A[16195:397226] info ===== (null)
2016-10-17 20:05:12.190 A[16195:397226] resp ===== {
hash = "ltfve-9rIKBcMpS_W81XJ0c-p5HU";
key = "ltfve-9rIKBcMpS_W81XJ0c-p5HU";
}我这个上传成功啦 但是怎样才能得到我上传图片的链接地址??
NSLog(@"info %@",info);
NSLog(@"resp %@",resp);
if (resp!=nil) {
[urlArry addObject:[resp objectForKey:@"key"]];
}
这里会直接跳过,就是上传失败吧,还是resp为空是上传失败,但我这里都不会执行 为什么啊,求解答