本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;
}