C++ 下载 Minio 文件

Minio 默认没有提供 C++ 的访问接口,可以使用 AWS 的 C++ SDK 来访问 Minio。

安装 SDK

下载 aws-sdk-cpp

git clone https://github.com/aws/aws-sdk-cpp.git

安装依赖

sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev

编译

mkdir cmake-build-<release/debug>
cd cmake-build-<release/debug>
cmake -DBUILD_ONLY="s3" -DCMAKE_BUILD_TYPE=<Release/Debug> -DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_INSTALL=<you-install-path> ..
make
make install

详细安装指南可以到官网查询,官网地址

使用 SDK

通过 CMAKE 使用 SDK

如果安装到 /usr/local 目录下的话可以使用如下的 CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.8)project(my-example)# Locate the AWS SDK for C++ package.
# "s3" and "cloudtrail" are just example values.
find_package(AWSSDK REQUIRED COMPONENTS s3)add_executable(my-example main.cpp)
target_link_libraries(my-example ${AWSSDK_LINK_LIBRARIES})

如果自定义安装目录的话(在编译时加入了 -DCMAKE_PREFIX_INSTLL 选项)时,需要在之前的 CMakeLists.txt 文件中加入 AWSSDK 的目录,如下所示

cmake_minimum_required(VERSION 3.8)project(my-example)set(AWSSDK_DIR "your installed path")
find_package(AWSSDK REQUIRED COMPONENTS s3)add_executable(my-example main.cpp)
target_link_libraries(my-example ${AWSSDK_LINK_LIBRARIES})

代码

#include <iostream>
#include <aws/core/Aws.h>
#include <aws/s3/S3Client.h>
#include <aws/core/auth/AWSCredentialsProvider.h>
#include <aws/s3/model/GetObjectRequest.h>
#include <fstream>
#include <string>bool doGetObject(const Aws::String &objectKey, const Aws::String &fromBucket, const Aws::String &region = "");int main(int, char **)
{Aws::SDKOptions options;Aws::InitAPI(options);{const Aws::String bucket_name = "lib";const Aws::String object_name = "main.log";if (!doGetObject(object_name, bucket_name)) {return 1;}}Aws::ShutdownAPI(options);return 0;
}bool doGetObject(const Aws::String &objectKey, const Aws::String &fromBucket, const Aws::String &region)
{Aws::Client::ClientConfiguration config;config.endpointOverride = "192.168.1.70:9001";config.scheme = Aws::Http::Scheme::HTTP;config.verifySSL = false;if (!region.empty()){config.region = region;}Aws::S3::S3Client s3_client(Aws::Auth::AWSCredentials("app-key", "sercet-key"), config,Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);Aws::S3::Model::GetObjectRequest object_request;object_request.SetBucket(fromBucket);object_request.SetKey(objectKey);Aws::S3::Model::GetObjectOutcome get_object_outcome = s3_client.GetObject(object_request);if (get_object_outcome.IsSuccess()) {auto& retrieved_file = get_object_outcome.GetResultWithOwnership().GetBody();std::cout << "Begining of file contents: \n";char file_data[255] = { 0 };retrieved_file.getline(file_data, 254);std::cout << file_data << std::endl;// 将下载的文件保存可以注释上方代码,使用如下内容// Aws::OFStream local_file;// local_file.open(objectKey, std::ios::out | std::ios::binary);// local_file << get_object_outcome.GetResultWithOwnership().GetBody().rdbuf();return true;} else {auto err = get_object_outcome.GetError();std::cout << "Error: GetObject: " << err.GetExceptionName() << ": " << err.GetMessage() << std::endl;return false;}
}

C++ 下载 Minio 的文件相关推荐

  1. minio操作,文件上传下载

    minio操作工具类(其中,ip,端口,账号,密码在配置文件中配置) @Api(value = "minio操作") @Component public class UploadF ...

  2. 关于Java实现批量下载MinIO指定目录下的所有文件

    关于Java实现批量下载MinIO指定目录下的所有文件 Straightforward String bucketName = "bucket01";// 检查'mybucket' ...

  3. Minio设置文件链接永久有效

    导航 前言 1.下载MinIO Client 2.运行MinIO Client 3.添加一个云存储服务 4.验证 5.policy命令 - 管理存储桶策略 前言 minio分享文件的链接,最多支持分享 ...

  4. minio分布式文件存储 windows部署 和 api 使用

    本文介绍 minio server 在windows的部署和api的使用,其中关于minio使用的配置类和工具类等可用源代码,可通过资源下载获得,此处不进行copy.资源地址:minio使用,poi解 ...

  5. python下载文件保存_python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  6. kali linux 下载百度云大文件

    参考资料:http://blog.csdn.net/a1eafall/article/details/51995293 百度云为了防止用户使用其他软件下载里面的文件(用其他软件下载速度很快),对其文件 ...

  7. python软件在下载库文件_python – 并行下载多个文件的库或工具

    我正在寻找一个python库或一个命令行工具来并行下载多个文件.我目前的解决方案是顺序下载文件缓慢.我知道你可以很容易地在python中编写一个半条线程的线程解决方案,但是在使用线程时总是遇到麻烦的问 ...

  8. 纯前端下载pdf链接文件,而不是打开预览的解决方案

    纯前端下载pdf链接文件,而不是打开预览的解决方案 参考文章: (1)纯前端下载pdf链接文件,而不是打开预览的解决方案 (2)https://www.cnblogs.com/jackson-yqj/ ...

  9. python3下载文件-python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

最新文章

  1. 还珠格格里的尔泰,重现娱乐圈
  2. IAR 使用小技巧--持续更新
  3. CodeForces - 1207F Remainder Problem(分块)
  4. Nginx在多层代理下获取真实客户端IP地址
  5. 贝叶斯分析好坏_贝叶斯统计 | 第五章第一部分 决策基本概念
  6. AspNetCoreRateLimit - ASP.NET Core 速率限制中间件。
  7. FFmpeg - C++中使用ffmpeg库
  8. springcloud 实现反向代理和负载均衡
  9. Qt Model/View/Delegate浅谈 - QAbstractListModel
  10. 实验室服务器安装虚拟机,如何使用VM虚拟机创建私有网络试验室
  11. 【学术杂谈】施一公:论文和科技实力是两回事,大家千万要分开
  12. 【渝粤题库】陕西师范大学800002 地球概论
  13. CloseableHttpClient 在使用过程中遇到的问题
  14. 全国电子设计大赛资料打包网盘10G
  15. python批量检测域名和url能否打开
  16. java代码在图片上画框
  17. LAMMPS甲烷全原子(CH4)模型的分子模板问题
  18. 【原创】Windows图标助手v2.0
  19. 针式个人知识管理系统帮助:实现您的PKM梦想!
  20. Android多人视频聊天应用的开发(一)快速集成

热门文章

  1. QT常见界面设计组件——QTreeWidget和QDockWidget
  2. [CodeFestival 2017J]MST
  3. 【快速入门大数据】Hadoop项目实战-用户行为日志
  4. 同一个controller中同一个service不同的方法调用怎么有的会为null
  5. php建站: 2019年最好用的6个php环境搭建工具推荐
  6. CF1325C Ehab and Path-etic MEXs
  7. 如何设计标签系统?如果构建用户画像
  8. 【Why】物理内存与虚拟内存区别与联系
  9. 日志分析管理系统ELK+redis+filebeat搭建
  10. Java----泛型与集合