使用阿里云 OSS C++ SDK

进入“对象存储 OSS”文档中心(地址:https://www.alibabacloud.com/help/zh/product/31815.htm),里面包含了几乎所有主流语言的 OSS SDK:

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

1

安装 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 会将库文件、头文件安装到指定目录下

2

基本配置

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

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

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

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 拷贝至程序所在目录。

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

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

·END·
 

高效程序员

谈天 · 说地 · 侃代码 · 开车

长按识别二维码,解锁更多精彩内容

发布了473 篇原创文章 · 获赞 4162 · 访问量 594万+

猜你喜欢

转载自blog.csdn.net/u011012932/article/details/105071482