七牛只有Objective-C的库没有Swift的库 , 所以需要桥接。桥接的方法不用多少了,网上一大堆教程
七牛oc的SDK地址:http://developer.qiniu.com/docs/v6/sdk/objc-sdk.html
可以使用cocoaPods直接引入 pod "Qiniu", "~> 7.0"
因为七牛有使用AFNetworking 和 HanekeSwift 库,所引入的时候要引入这两个
一般微信、微博SDK桥接,我们直接简单的这样就行了
#import "WXApiObject.h"
#import "WXApi.h"
#import "WeiboSDK.h"
但是七牛你这样导入 就会报错 , 一直说找不到文件。
你需要这样
#import "AFNetworking/AFNetworking.h"
#import "Qiniu/QiniuSDK.h"
#import "HappyDNS/HappyDNS.h"
现在好了,不报错了。满心欢喜的开始使用SDK, 我想上传本地相册的照片 , 用的PhotoKit拿到的是PHAsset
对象 , 看了下官方的例子 :
#import <QiniuSDK.h>
...
NSString token = @"从服务端SDK获取";
QNUploadManager *upManager = [[QNUploadManager alloc] init];
NSData *data = [@"Hello, World!" dataUsingEncoding : NSUTF8StringEncoding];
[upManager putData:data key:@"hello" token:token complete:
^(QNResponseInfo *info, NSString *key, NSDictionary *resp)
{
NSLog(@"%@", info);
NSLog(@"%@", resp);
} option:nil];
...
一看就是传入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后,成功了。
let upManager = QNUploadManager()
upManager.putPHAsset(item, key: nil , token: token , complete: { (info, key, resp) -> Void in
if (info.statusCode == 200 && resp != nil){
//上传完毕
if i == sum{
//刷新数据
}
}else{
//失败
}
}, option: nil)
token是从自己服务器上取嗒。问题终于解决了,关键是百度居然没搜到这样问题。还是我太年轻。。。记录下吧。
网友评论