小斑swiftiOS-swift

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

2015-11-04  本文已影响3791人  smalldu
七牛

七牛只有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是从自己服务器上取嗒。问题终于解决了,关键是百度居然没搜到这样问题。还是我太年轻。。。记录下吧。

上一篇下一篇

猜你喜欢

热点阅读