Swift使用七牛上传图片的一些坑

Swift使用七牛上传图片的一些坑,第1张

七牛只有Objective-C的库没有Swift的库 , 所以需要桥接。桥接的方法不用多少了,网上一大堆教程

七牛oc的SDK地址: http://developer.qiniu.com/docs/v6/sdk/objc-sdk.html

可以使用cocoaPods直接引入 pod "Qiniu", "~>7.0"

因为七牛有使用AFNetworking 和 HanekeSwift 库,所引入的时候要引入这两个

一般微信、微博SDK桥接,我们直接简单的这样就行了

但是七牛你这样导入 就会报错 , 一直说找不到文件。

你需要这样

现在好了,不报错了。满心欢喜的开始使用SDK, 我想上传本地相册的照片 , 用的PhotoKit拿到的是 PHAsset 对象 , 看了下官方的例子 :

一看就是传入NSData类型的数据,传入一个key ,继续很happy的将它转成swift的格式,info.statusCode 为200的时候是成功 。 然后根据自己的PHAsset拿到UIImage对象 , 将UIImage对象再转成NSData类型的对象。传入后返回statusCode 200很开心成功了。

然而 ,从服务器down下来 ,图片格式.81.223之类的,什么鬼不是成功了吗。。。。。

好吧,服务器返回的连接是乱的错得。 去看七牛的API ,原来有各种put的方法 putFile , putPHAsset 。。。。等等 。尼玛。还是太年轻呀。。

最后用了putPHAsset返回的连接还是错的,最后看api说key可以为nil,这样的话七牛随机生成,我传入了nil后,成功了。

token是从自己服务器上取嗒。问题终于解决了,关键是百度居然没搜到这样问题。还是我太年轻。。。记录下吧。

最近遇到的坑,后台返回的token和filename都没有问题,上传图片还是报code400,最后发现是因为后端申请七牛云的时候填写的服务器是华南区 而SDK里默认是华东区,导致上传失败。

步骤一:先搜索七牛SDK里的zone0(图一)

步骤二:查看后台申请的区域(图三)

步骤三:把(图二)中的zone2改成你对应的服务区区域。因为我是华南服务器,所以调用了zone2

上一篇文章介绍了“如何将图片上传到Cloudinary云平台?”

但是由于Cloudinary的服务器在国外,所以上传和读取图片的速度会很慢,不适合用作生产,因此有必要再介绍一下国内广受欢迎的“七牛”云平台。以及分步骤给大家介绍如何使用七牛。

各位可以使用我的邀请链接注册: https://portal.qiniu.com/signup?code=3l7nsvonfkxn6

拜托!!!

我们这里添加的对象存储空间叫做“gougouavatar”

其中的ACCESS_KEY和SECRET_KEY两个参数来自于“个人中心”的“秘钥管理”模块:

_getQiniuToken()返回一个封装promise函数,这个函数调用了后台生成签名算法的接口;

这个函数的回调里拿到了后台生成的key和其他参数;

最后调用_upload方法向七牛的上传图片的接口地址: http://upload.qiniu.com ,发送请求,上传图片;

最后的响应参数response.key即为图片上传成功之后的地址。

如:deae507d-73fd-4489-9d7f-d5fa275bcbe5.jpeg

想要访问该图片,还需拼接上七牛提供的测试域名:

经过测试,使用七牛进行上传的速度确实很快,比国外的cloudinary要快上好几倍,使用体验还是很不错的,大家可以放心使用。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/94759.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存