使用阿里云 OSS C++ SDK ╰半橙微兮° 2023-07-18 04:57 1阅读 0赞 ![format_png][] 进入“对象存储 OSS”文档中心(地址:https://www.alibabacloud.com/help/zh/product/31815.htm),里面包含了几乎所有主流语言的 OSS SDK: ![format_png 1][] 对于每一种语言,从 SDK 的下载安装,到示例代码的功能演示,这里面都有详细的使用说明。下面以 C++ 为例,来详细介绍 OSS C++ SDK 的使用。 1 **安装 SDK** 选择左侧的“C++”->“安装”,然后点击右侧页面中的“直接下载”: ![format_png 2][] **注意:**下载的 SDK 中不直接提供 alibabacloud-oss-cpp-sdk.sln 工程文件,需要通过 CMake 生成所需的工程文件。 解压缩安装包,然后创建 build 文件夹。打开 cmd,运行 cmake .. 命令生成所需文件: ![format_png 3][] **注意:**如果要构建 x64 体系结构,可以使用命令 cmake -A x64 .. 来实现。 以管理员权限运行 VS(安装库和头文件需要权限),打开 alibabacloud-oss-cpp-sdk.sln 并生成解决方案: ![format_png 4][] 这时候就会生成库文件 alibabacloud-oss-cpp-sdk.lib ,执行 INSTALL 会将库文件、头文件安装到指定目录下。 2 **基本配置** 新建一个项目 - HelloOSS,右键“属性”,选择“C/C++”->“常规”,在附加包含目录处添加安装后的头文件所在路径: ![format_png 5][] 选择“连接器”->“常规”,在附加库目录处添加 .lib 文件所在路径: ![format_png 6][] 选择“连接器”->“输入”,在附加依赖项处添加 .lib 文件(alibabacloud-oss-cpp-sdk.lib、libcurl.lib、libeay32.lib、ssleay32.lib): ![format_png 7][] 3 **上传文件** 当配置完成之后,就可以开始 coding 了。有关存储的每一个功能(例如:上传文件、下载文件、管理文件),官方都提供的相应的示例,可以直接拿来使用。 以上传的代码为例,需要将账号信息修改为我们自己的信息: #include <alibabacloud/oss/OssClient.h> #include <fstream> using namespace AlibabaCloud::OSS; int main(void) { /* 初始化OSS账号信息 */ std::string AccessKeyId = "yourAccessKeyId"; std::string AccessKeySecret = "yourAccessKeySecret"; std::string Endpoint = "yourEndpoint"; std::string BucketName = "yourBucketName"; /* yourObjectName表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg*/ std::string ObjectName = "images/logo.png"; /* 初始化网络等资源 */ InitializeSdk(); ClientConfiguration conf; OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf); std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("E:/logo.png", std::ios::in | std::ios::binary); PutObjectRequest request(BucketName, ObjectName, content); /*(可选)请参见如下示例设置存储类型及访问权限ACL*/ //request.MetaData().addHeader("x-oss-object-acl", "private"); //request.MetaData().addHeader("x-oss-storage-class", "Standard"); auto outcome = client.PutObject(request); if (!outcome.isSuccess()) { /* 异常处理 */ std::cout << "PutObject fail" << ",code:" << outcome.error().Code() << ",message:" << outcome.error().Message() << ",requestId:" << outcome.error().RequestId() << std::endl; ShutdownSdk(); return -1; } /* 释放网络等资源 */ ShutdownSdk(); return 0; } **注意:**当程序编译完成之后,记得将依赖的 dll 拷贝至程序所在目录。 运行程序,上传成功就能在“文件管理”中看到相应的信息了: ![format_png 8][] 其他 API 使用一样,照着官方的例子一步步做就行。 **·END·** **高效程序员** 谈天 · 说地 · 侃代码 · 开车 ![format_png 9][] 长按识别二维码,解锁更多精彩内容 [format_png]: /images/20230528/75351ccecf2d441c81446f1100c6095f.png [format_png 1]: /images/20230528/a0ccd4b354664e52a8d3b085544c46b4.png [format_png 2]: /images/20230528/f46d4de54f2e44a7aed7c83b37b252e5.png [format_png 3]: /images/20230528/415b109db2c847359d884640cf3c5917.png [format_png 4]: /images/20230528/97e451f6c23642cd83a020aa08b9e27d.png [format_png 5]: /images/20230528/6dc3fb2093b0487a8cd2cb4544a0998b.png [format_png 6]: /images/20230528/db52ea05063144a19ac004d978863a91.png [format_png 7]: /images/20230528/6ebbdee3dcac49daaeced25468e3f9ce.png [format_png 8]: /images/20230528/b837da0dd20446c1a1735a25ff03af84.png [format_png 9]: /images/20230528/8c92f0e58b9147c7965ecc6b00b4c3e8.png
还没有评论,来说两句吧...