最近更新时间: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);
}
纯净模式