{"id":19411514,"url":"https://github.com/volcengine/ve-tos-cpp-sdk","last_synced_at":"2026-02-28T08:13:51.335Z","repository":{"id":38842495,"uuid":"476107867","full_name":"volcengine/ve-tos-cpp-sdk","owner":"volcengine","description":"Volcengine TOS C++ SDK","archived":false,"fork":false,"pushed_at":"2025-07-03T03:31:12.000Z","size":5765,"stargazers_count":10,"open_issues_count":2,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-03T04:32:10.109Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/volcengine.png","metadata":{"files":{"readme":"README-zh.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-31T01:27:22.000Z","updated_at":"2025-07-03T03:29:46.000Z","dependencies_parsed_at":"2022-09-18T12:51:04.157Z","dependency_job_id":"28799f48-7fe1-402b-8cee-a2793fdf90f0","html_url":"https://github.com/volcengine/ve-tos-cpp-sdk","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/volcengine/ve-tos-cpp-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volcengine%2Fve-tos-cpp-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volcengine%2Fve-tos-cpp-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volcengine%2Fve-tos-cpp-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volcengine%2Fve-tos-cpp-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/volcengine","download_url":"https://codeload.github.com/volcengine/ve-tos-cpp-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volcengine%2Fve-tos-cpp-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270781196,"owners_count":24643804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T12:21:50.384Z","updated_at":"2026-02-28T08:13:51.283Z","avatar_url":"https://github.com/volcengine.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 火山引擎 TOS C++ SDK\n\nTOS C++ SDK为C++开发者提供了访问火山引擎对象存储服务TOS（Tinder Object Storage）的系列接口。\n本文档将给出TOS桶和对象的基本操作代码，供开发者参考，具体API文档请参考[官网文档](https://www.volcengine.com/docs/6349/107395)\n\n## 安装\n\n### 最低依赖\n\n- C++ 11 及以上版本\n- CMake ( 3.1 及以上版本)\n- GCC 4.8 及以上版本\n- Clang 3.3 及以上版本\n\n### 通过源码编译\n\n1. 下载源码\n\n- 直接下载 [release](https://github.com/volcengine/ve-tos-cpp-sdk/archive/refs/tags/0.2.1.zip)\n- 通过git克隆到本地\n\n```bash\ngit clone https://github.com/volcengine/ve-tos-cpp-sdk\n```\n\n2. 使用 CMake 3.1 及以上版本构建\n\n```bash\ncd ve-tos-cpp-sdk\nmkdir build\ncd build\n```\n\nSDK 依赖 libcurl 和 openssl 两个库. 请在构建 SDK 之前确保已安装这两个库。\n\n#### Linux\n\n运行以下命令安装 libcurl 和 openssl\n\n```bash\n$ (Ubuntu/Debian)\n$ sudo apt-get install libcurl4-openssl-dev libssl-dev\n$ (Redhat/Fedora)\n$ sudo dnf install libcurl-devel openssl-devel\n```\n\n运行以下命令进行编译及安装\n\n```bash\ncmake ../ -DCMAKE_INSTALL_PREFIX=\"sdk安装路径\"\nmake\nmake install\n```\n\n#### Macos\n\n在mac系统上需指定openssl库的路径。以如下命令为例\n\n```bash\ncmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl@3/3.0.0 \n         -DOPENSSL_LIBRARIES=/usr/local/Cellar/openssl@3/3.0.0/lib \n         -DOPENSSL_INCLUDE_DIRS=/usr/local/Cellar/openssl@3/3.0.0/include\n         -DCMAKE_INSTALL_PREFIX=\"your path to install sdk\"\nmake\nmake install\n```\n\n#### Windows\n\n请以管理员身份运行 VS 开发人员命令提示符，在 build 目录文件下运行以下命令进行编译安装。\n\n```bash\ncmake ../\nmsbuild ALL_BUILD.vcxproj\nmsbuild INSTALL.vcxproj\n```\n\n### CMake编译选项\n\n#### BUILD_SHARED_LIB\n\n默认关闭，cmake默认只编译静态库。打开后，cmake会同时编译静态库和动态库，同时SDK会链接到动态库。\n\n```bash\ncmake .. -DBUILD_SHARED_LIB=ON\n```\n\n#### BUILD_DEMO\n\n默认关闭。打开后，cmake会对example文件夹中的示例进行编译，可直接运行。具体见example文件夹中示例。\n\n```bash\ncmake .. -DBUILD_DEMO=ON\n```\n\n#### BUILD_UNITTEST\n\n默认关闭。打开后cmake会编译test文件夹中的单测用例。\n\n```bash\ncmake .. -DBUILD_UNITTEST=ON\n```\n\n## 快速入门\n\n本节介绍，如何通过TOS C++ SDK来完成常见的操作，如创建桶，上传、下载和删除对象等。\n\n### 初始化TOS客户端\n\n初始化TOSClient实例之后，才可以向TOS服务发送HTTP/HTTPS请求。\n初始化客户端时，需要带上accesskey，secretkey，endpoint和region。初始化代码如下：\n\n```cpp\n#include \"TosClientV2.h\"\nusing namespace VolcengineTos;\nstd::string region(\"Your Region\");\n\n// 从环境变量中获取访问凭证。运行示例代码之前，请确保已设置环境变量 TOS_ACCESS_KEY 和 TOS_SECRET_KEY\nstd::string accessKey = std::getenv(\"TOS_ACCESS_KEY\");\nstd::string secretKey = std::getenv(\"TOS_SECRET_KEY\");\n\n// 初始化 SDK\nInitializeClient();\n// 初始化交互的 client\nTosClientV2 client(region, accessKey, secretKey);\n/*\n使用 SDK\n*/\n// 关闭 SDK\nCloseClient();\n```\n\n### 创建桶\n\n桶是TOS的全局唯一的命名空间，相当于数据的容器，用来储存对象数据。如下代码展示如何创建一个新桶：\n\n```cpp\nstd::string bucketName(\"Your Bucket Name\");\nCreateBucketV2Input input(bucketName);\nauto output = client.createBucket(input);\nif (!output.isSuccess()){\n  std::cout \u003c\u003c output.error().String() \u003c\u003c std::endl;\n  return;\n}\nstd::cout \u003c\u003c output.result().getLocation() \u003c\u003c std::endl;\n```\n\n### 上传对象\n\n新建桶成功后，可以往桶中上传对象，如下展示如何上传一个对象到已创建的桶中：\n\n```cpp\n// 需要上传的对象数据，以stringstream的形式上传\nstd::string bucketName(\"Your Bucket Name\");\nstd::string data(\"1234567890abcdefghijklmnopqrstuvwxyz~!@#$%^\u0026*()_+\u003c\u003e?,./   :'1234567890abcdefghijklmnopqrstuvwxyz~!@#$%^\u0026*()_+\u003c\u003e?,./   :'\");\nauto ss = std::make_shared\u003cstd::stringstream\u003e(data);\nstd::string objectKey(\"Your Object Key\");\nPutObjectV2Input input(bucketName, objectKey, ss);\nauto output = client.putObject(input);\nif (!output.isSuccess()) {\n  std::cout \u003c\u003c \"put object error: \"\n            \u003c\u003c output.error().String()\n            \u003c\u003c std::endl;\n  return;\n}\nstd::cout \u003c\u003c \"put object success, object etag is: \"\n          \u003c\u003c output.result().getEtag()\n          \u003c\u003c std::endl;\n```\n\n### 下载对象\n\n如下展示如何从桶中下载一个已经存在的对象：\n\n```cpp\nstd::string bucketName(\"Your Bucket Name\");\nstd::string objectKey(\"Your Object Key\");\nGetObjectV2Input input(bucketName, objectKey);\nauto output = client.getObject(input);\nif (!output.isSuccess()){\n  std::cout \u003c\u003c output.error().String() \u003c\u003c std::endl;\n  return;\n}\nstd::cout \u003c\u003c output.result().getObjectMeta().getEtags() \u003c\u003c std::endl;\n```\n\n### 删除对象\n\n如下展示如何从桶中删除一个已经存在的对象：\n\n```cpp\nstd::string bucketName(\"Your Bucket Name\");\nstd::string objectKey(\"Your Object Key\");\nDeleteObjectInput input(bucketName, objectKey);\nauto output = client.deleteObject(input);\nif (!output.isSuccess()){\n  std::cout \u003c\u003c output.error().String() \u003c\u003c std::endl;\n  return;\n}\nstd::cout \u003c\u003c output.result().getRequestInfo().getRequestId() \u003c\u003c std::endl;\n```\n\n## License\n\n[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolcengine%2Fve-tos-cpp-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolcengine%2Fve-tos-cpp-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolcengine%2Fve-tos-cpp-sdk/lists"}