使用阿里云 OSS C++ SDK

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

在《开通阿里云 OSS 服务》之后,我们来看看如何使用 OSS SDK。

进入 SDK示例 - 对象存储 OSS - 阿里云,里面包含了几乎所有主流语言的 OSS SDK:

对于每一种语言,从 SDK 的下载安装,到示例代码的功能演示,这里面都有详细的使用说明。下面以 C++ 为例,来详细介绍 OSS C++ SDK 的使用。

安装 SDK

选择左侧的“C++”->“安装”,然后点击右侧页面中的“直接下载”:

注意:下载的 SDK 中不直接提供 alibabacloud-oss-cpp-sdk.sln 工程文件,需要通过 CMake 生成所需的工程文件。

解压缩安装包,然后创建 build 文件夹。打开 cmd,运行 cmake .. 命令生成所需文件:

注意:如果要构建 x64 体系结构,可以使用命令 cmake -A x64 .. 来实现。

以管理员权限运行 VS(安装库和头文件需要权限),打开 alibabacloud-oss-cpp-sdk.sln 并生成解决方案:

这时候就会生成库文件 alibabacloud-oss-cpp-sdk.lib ,执行 INSTALL 会将库文件、头文件安装到指定目录下。

基本配置

新建一个项目 - HelloOSS,右键“属性”,选择“C/C++”->“常规”,在附加包含目录处添加安装后的头文件所在路径:

选择“连接器”->“常规”,在附加库目录处添加 .lib 文件所在路径:

选择“连接器”->“输入”,在附加依赖项处添加 .lib 文件(alibabacloud-oss-cpp-sdk.lib、libcurl.lib、libeay32.lib、ssleay32.lib):

上传文件

当配置完成之后,就可以开始 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 拷贝至程序所在目录。

运行程序,上传成功就能在“文件管理”中看到相应的信息了:

其他 API 使用一样,照着官方的例子一步步做就行。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一去丶二三里

有收获,再打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值