美文网首页
使用阿里云OSS上传图片

使用阿里云OSS上传图片

作者: 雪域红鹰 | 来源:发表于2021-03-30 18:11 被阅读0次

因需求变化,先将七牛的图片存储改为阿里云的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()
    }
}

相关文章

网友评论

      本文标题:使用阿里云OSS上传图片

      本文链接:https://www.haomeiwen.com/subject/gmdahltx.html