C++ | 上传文件到百度云

565 阅读2分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

前言:

如果程序的资源是保存在百度云服务其中的,那我们在实现文件上传时,需要调用百度云提供给我们的接口去访问百度云服务器进行文件上传的工作。上传文件又分为简单上传、追加上传、分块上传、断点续传等。

简单上传就是上传一个文件大小比较小、上传时间比较短的文件,百度云的简单上传支持5G以下。

简单上传这种上传方式用户不可以再进行追加写,这在日志、视频监控、视频直播等数据复写较频繁的场景中使用不方便。所以百度云提供了追加上传的功能,大小限制为0~5G。

分块上传支持上传超过5G大小的文件,支持断点续传,支持流式地上传文件呢,应用于网络条件比较差,和服务器之间的连接经常断开的情况下,还有如果在上传文件之前,无法确定上传文件的大小的情况下,也应该采用分块上传的方式。

断点续传是为了解决如果上传文件较大、网络不稳定或遇到程序崩溃等问题时,整个文件的上传就失败了,失败前上传的部分也就作废了,用户就需要重新上传,这样做会浪费资源,可能导致多次上传都无法完成。所以百度云提供了断点续传的方法。主要思想是多次调用分块上传,然后将数据再进行拼接,形成一个完整的文件。

我们这里用到的主要是C++实现文件的简单上传,参考百度云SDK手册,手册网址为:百度云C++ SDK 简单上传

实现:

1. 首先在项目中添加百度云的SDK,官网有提供。

2. 设置节点区域、类似账号、类似密码。

baidu::bos::cppsdk::ClientOptions option;
option.max_parallel = ;
option.endpoint = "";
std::string ak = "";
std::string sk = "";
baidu::bos::cppsdk::Client client(ak, sk, option);

以上的值都要根据自己的百度云信息进行设置。

3. 上传文件。

int ret = client.upload_file(bucketName, objectKey, filePath);

  • bucketName为百度云中的存放的位置的名称。
  • objectKey为要上传到百度云时创建的文件名
  • filePath为文件在本机存放的地址。
  • 返回值为0代表上传成功。