• qtMingw 阿里OSS调用记录


    //上传
    long
    ossUpload(QString localFilePath, QString ossFilePath, std::function<void (int, int, int)> progressCallback) { if(IsSdkInitialized()) { InitializeSdk(); } ClientConfiguration conf; conf.verifySSL = false; OssClient client(ENDPOINT_URL, ACCESS_KEY_ID, ACCESS_KEY_SECRET, conf); long transmissionLen = 0; std::shared_ptr<std::iostream> fileStream = std::make_shared<std::fstream>(localFilePath.toStdString().c_str(), std::ios::in|std::ios::binary); PutObjectRequest putReq(BUCKET_NAME, ossFilePath.toStdString(), fileStream); if(progressCallback != nullptr) { TransferProgress processCallback = {[progressCallback, &transmissionLen](size_t increment, int64_t transfered, int64_t total, void* userData){ progressCallback(transfered, total, increment); transmissionLen += increment; }, nullptr}; putReq.setTransferProgress(processCallback); } PutObjectOutcome result = client.PutObject(putReq); if (!result.isSuccess()) { qDebug() << "上传失败!"; } return transmissionLen; }

    localFilePath: 上传文件路径
    ossFilePath: OSS文件路径
    progressCallback: 上传过程回调(int 已上传大小(上传进度), int 总大小(总进度), int 本次上传数据大小)
    long ossDownload(QString ossFilePath, QString localFilePath, std::function<void (int, int, int)> progressCallback)
    {
        if(IsSdkInitialized()) {
            InitializeSdk();
        }
        ClientConfiguration conf;
        conf.verifySSL = false;
        OssClient client(ENDPOINT_URL, ACCESS_KEY_ID, ACCESS_KEY_SECRET, conf);
        GetObjectRequest request(BUCKET_NAME, ossFilePath.toStdString());
        long transmissionLen = 0;
        if(progressCallback != nullptr) {
            TransferProgress processCallback = {[progressCallback, &transmissionLen](size_t increment, int64_t transfered, int64_t total, void* userData){
                                                    progressCallback(transfered, total, increment);
                                                    transmissionLen += increment;
                                                }, nullptr};
            request.setTransferProgress(processCallback);
        }
    
        request.setResponseStreamFactory([localFilePath]{
            return std::make_shared<std::fstream>(localFilePath.toStdString().c_str(), std::ios_base::out|std::ios_base::binary);
        });
        GetObjectOutcome result = client.GetObject(request);
        if(!result.isSuccess()) {
            qDebug() << "下载失败!  " << "下载状态: " << result.isSuccess() << " 下载oss路径:" << ossFilePath << " 下载本地路径: " << localFilePath;
        }
    
        return transmissionLen;
    }
    progressCallback: 上传过程回调(int 已下载大小(下载进度), int 总大小(总进度), int 本次下载数据大小)

    OSS地址:

    using namespace AlibabaCloud::OSS;
    #define ENDPOINT_URL  "oss-cn-beijing.aliyuncs.com"
    #define ACCESS_KEY_ID  "xxxxxx"
    #define ACCESS_KEY_SECRET  "xxxxxx"
    #define BUCKET_NAME  "xxxxxx"
  • 相关阅读:
    阅读笔记03
    第十三周总结
    阅读笔记02
    第十二周总结
    第十一周总结
    阅读笔记01
    阅读笔记3
    第十一周总结
    阅读笔记
    HDFS-学习总结
  • 原文地址:https://www.cnblogs.com/GengMingYan/p/15614810.html
Copyright © 2020-2023  润新知