快速使用

安装

前提条件

  • C++ 11及以上版本的编译器
  • cmake 3.10及以上版本

安装第三方依赖

安装libtcmalloc

1
  yum install gperftools

安装libcurl

1
  yum install libcurl-devel

安装libjson-c

1
2
3
4
5
6
  git clone https://github.com/json-c/json-c.git
  mkdir json-c-build
  cd json-c-build
  cmake ../json-c
  make
  make install

编辑文件/etc/ld.so.conf, 插入下面这行内容

1
/usr/local/lib64

执行以下命令使配置生效

1
ldconfig

sdk下载安装

1
  git clone https://github.com/ufilesdk-dev/ufile-cppsdk.git
  • 编译安装
1
2
3
4
5
6
7
  cd ufile-cppsdk
  mkdir build
  cd build
  cmake ..
  make
  make install
  git clone https://github.com/ufilesdk-dev/ufile-cppsdk.git
  • 查阅演示程序
1
2
  cd demo
  ./demo

查阅演示程序

使用示例

使用本 SDK 时请配置相关配置文件, 配置文件的路径为 /etc/ufilesdk.conf 或者 ./ufilesdk.conf

具体配置格式请参考 代码目录中的ucloud/include/ufile-cppsdk/config.h文件的描述

  • 配置文件示例:
1
2
3
4
5
{
  "public_key": "your public key",
  "private_key": "your private key",
  "proxy_host": ".cn-bj.ufileos.com"
}

密钥可以在控制台中 API 产品 - API 密钥,点击显示 API 密钥获取。将 public_key 和 private_key 分别赋值给相关变量后,SDK即可通过此密钥完成鉴权。请妥善保管好 API 密钥,避免泄露。 token(令牌)是针对指定bucket授权的一对公私钥。可通过token进行授权bucket的权限控制和管理。可以在控制台中对象存储US3-令牌管理,点击创建令牌获取。

file_host 是文件操作请求的接收地址,可以在控制台的存储空间域名一列获取,例如test-demo.cn-bj.ufileos.com,填写.cn-bj.ufileos.com即可(注意要以.开头),不需要存储空间名称。

配置也可以通过使用本SDK提供的UFileSetConfig函数来动态修改

1
2
3
4
5
6
7
/*
 * 动态修改配置
 * public_key: 您账户的 API 公钥
 * private_key: 您账户的 API 私钥
 * proxy_host: 区域的域名
 */
void ucloud::cppsdk::config::UFileSetConfig(std::string public_key, std::string private_key, std::string proxy_host);

示例代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <ufile-cppsdk/api.h>

#define BUCKET ("mytest")
#define KEY ("gg")
#define FILE ("/etc/ufilesdk.conf")


int main() {
  ucloud::cppsdk::api::UFilePut uploader;
  int ret = uploader.PutFile(BUCKET, KEY, FILE);
  if (ret) {
    std::cerr << "putfile error: retcode=" << UFILE_LAST_RETCODE() \
              << ", errmsg=" << UFILE_LAST_ERRMSG() << std::endl;
    return ret;
  }

  std::cout << "put file success" << std::endl;
  return 0;
}

上述代码实现了一个简单的上传逻辑,将文件/etc/ufilesdk.conf以"gg"作为key上传到存储空间(Bucket)mytest中

编译示例代码:

1
  g++ mydemo.cc -o mydemo -lufilecppsdk -lcurl -ljson-c