文件下载

本SDK提供UFileDownload类用于下载操作,完整代码详见 Github

UFileDownload::Download调用的 US3 API 为GetFile, 具体参见GetFile API文档

方法原型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * 下载文件到一个输出流
 * 参数说明:
 * `bucket`: 文件所在的存储空间
 * `key`: 文件在存储空间里的名称
 * `os`: 文件输出流
 * `range`: 分片下载的区间,区间为前闭后闭, [begin, end]
 */
int Download(const std::string &bucket, const std::string &key, std::ostream *os, const std::pair<ssize_t, ssize_t> *range = NULL);

/* 
 * 下载文件到本地的指定路径
 * 参数说明:
 * `bucket`: 文件所在的存储空间
 * `key`: 文件在存储空间里的名称
 * `filepath`: 要下载到的本地路径
 * `range`: 分片下载的区间,区间为前闭后闭, [begin, end]
 * `force`: 是否覆盖本地已存在的文件, true表示覆盖, false表示不覆盖
 */
int DownloadAsFile(const std::string &bucket, const std::string &key, const std::string &filepath, const std::pair<ssize_t, ssize_t> *range = NULL, bool force = false);

示例

执行该示例前请确保配置文件的正确性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cstring>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <ufile-cppsdk/api.h>

const char* bucket_name = "your bucket name";
const char* key = "your file key";
const char* file_path = "your local file to be downloaded";

int main() {
  // 实例化一个UFileDownload对象
  ucloud::cppsdk::api::UFileDownload downloader;

  // 调用成员函数DownloadAsFile下载文件
  int ret = downloader.DownloadAsFile(bucket_name, key, file_path);

  if (ret) {
    std::cerr << "download error: retcode=" << UFILE_LAST_RETCODE()
              << ", errmsg=" << UFILE_LAST_ERRMSG() << std::endl;
    return ret;
  }

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