因需求变化,先将七牛的图片存储改为阿里云的OSS图片存储。在这做一个记录,有什么不对希望各位大神给与指点
1.从后台服务器获取keyId、keySecret、token
此处省略。我们后台同时返回给我path图片在阿里云存储位置
2.客户端代码
此处主要使用的同步上图单张图片,成功需要把路径保存到服务器
import AliyunOSSiOS
public protocol OssAliyunDelegate : NSObjectProtocol{
func oSSRequestSuccess(object:OSSPutObjectResult)
func oSSRequestFailure(msg:String)
}
final class OssAliyun: NSObject {
let config = OSSClientConfiguration()
private var ossClient:OSSClient?
weak public var delegate: OssAliyunDelegate?
override init() {
super.init()
config.maxRetryCount = 2
config.timeoutIntervalForRequest = 300
config.timeoutIntervalForResource = TimeInterval(24 * 60 * 60)
config.maxConcurrentRequestCount = 5
}
func setOsstoken(keyId:String,keySecret:String,token:String){
let credential = OSSStsTokenCredentialProvider.init(accessKeyId: keyId, secretKeyId: keySecret, securityToken: token);
ossClient = OSSClient(endpoint: KOssEndPoint, credentialProvider: credential,clientConfiguration: config)
}
func uploadFile(data:Data,localPath:String){
let ossPutObj: OSSPutObjectRequest = OSSPutObjectRequest()
ossPutObj.bucketName = KBucketName
ossPutObj.objectKey = localPath
ossPutObj.uploadingData = data;
let uploadTask = ossClient?.putObject(ossPutObj)
weak var weakSelf = self
uploadTask?.continue({(task: OSSTask<AnyObject>) -> Any? in
if let err = task.error {
debugPrint("上传图片失败:\(err)")
if(weakSelf?.delegate != nil){
weakSelf?.delegate?.oSSRequestFailure(msg:err.localizedDescription)
}
}else{
//上传成功后预览地址自行拼接
if let result = task.result as? OSSPutObjectResult{
if(weakSelf?.delegate != nil){
weakSelf?.delegate?.oSSRequestSuccess(object:result)
}
}
}
return uploadTask
})
// 等待任务完成。
uploadTask?.waitUntilFinished()
}
}
网友评论