全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

使用预签名url简单下载

最近更新时间:2025-04-25 15:42:55

以下代码使用预签名url简单下载。

size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

using namespace ks3::sdk;

void getObjectByUrlDemo() {
    std::string ak = "<your access key>";
    std::string sk = "<your secret key>";
    std::string host = "<your endpoint>"; // 填写桶所在region对应的Endpoint
    // 初始化client
    KS3Client client(host, ak, sk);

    std::string bucketName = "<your bucket name>";
    std::string keyName = "<your key name>";

    auto req = GeneratePresignedUrlRequest(bucketName, keyName, MethodType::GET_METHOD);
    // 设置过期时间为1小时
    req.SetExpires(std::time(nullptr) + 3600);
    std::string downloadUrl = client.GeneratePresignedUrl(req);

    // 完成简单的GET请求
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    // 设置URL
    curl_easy_setopt(curl, CURLOPT_URL, downloadUrl.c_str());

    std::string readBuffer;
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

    // 执行请求
    res = curl_easy_perform(curl);
    if (res != CURLE_OK)
        std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
    else
        std::cout << readBuffer << std::endl; // 输出返回的内容
    curl_easy_cleanup(curl);
}

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈