目录
- minio简介
- minio-cpp简介
- minio-cpp使用
minio简介
minio是一个开源的高性能对象存储解决方案,完全兼容Amazon S3 API,支持分布式存储,适用于大规模数据架构,容易集成,而且可以方便的部署在集群中。
如果你已经部署了minio服务器,可以直接在浏览器中使用你的minio服务器URL比如http://IP:PORT
形式登录你的minio服务器。
minio-cpp简介
minio-cpp是minio官方提供的C++ SDK,不仅能与minio服务交互,而且还可以和任何兼容Amazon S3 API的对象存储服务进行交互。
minio-cpp使用
来看一个简单示例,当然这只是一个demo,实际怎么获取库以及怎么使用库要根据需求考虑。
首先要获取到minio-cpp:
- minio-cpp的源码可以在GitHub仓库中下载,你可以选择使用源码编译。
- minio-cpp使用了vcpkg包管理器管理,所以你也可以直接使用vcpkg安装。
这里我们以使用vcpkg安装为例,首先执行命令vcpkg install minio-cpp安装(当然执行这条命令你需要先安装vcpkg),安装好了之后你会发现vcpkg的安装目录下多了minio-cpp及其依赖。
然后我们就可以写自己的解决方案了,我们来写一个简单的上传数据的demo,先看一下目录结构
结构很简单。
然后看一下main.cpp
#include <iostream>
#include <sstream>
#include "miniocpp/client.h"
int main()
{
// 设置URL,可以填写域名形式或者IP:端口形式,默认是https,如果用http,即使在URL里指明了http也会有问题,需要给第二个参数传入false
minio::s3::BaseUrl baseUrl("xxx");
// 设置access_key和secret_key
minio::creds::StaticProvider staticProvider("xxx", "xxx");
minio::s3::Client client(baseUrl, &staticProvider);
// 检查桶是否存在
bool bBucketExists = false;
{
minio::s3::BucketExistsArgs bucketExistsArgs;
bucketExistsArgs.bucket = "demo";
minio::s3::BucketExistsResponse bucketExistsResponse = client.BucketExists(bucketExistsArgs);
if (bucketExistsResponse)
{
// 请求正常
bBucketExists = bucketExistsResponse.exist;
}
else
{
// 请求异常
std::cout << bucketExistsResponse.Error().String() << std::endl;
return -1;
}
}
// 桶不存在则创建
if (!bBucketExists)
{
minio::s3::MakeBucketArgs makeBucketArgs;
makeBucketArgs.bucket = "demo";
minio::s3::MakeBucketResponse makeBucketResponse = client.MakeBucket(makeBucketArgs);
if (!makeBucketResponse)
{
// 创建异常
std::cout << makeBucketResponse.Error().String() << std::endl;
return -1;
}
}
// 上传数据
std::string strData = "demodata";
std::istringstream issData(strData);
minio::s3::PutObjectArgs putObjectArgs(issData, strData.size(), 0);
putObjectArgs.bucket = "demo";
putObjectArgs.object = "demo";
minio::s3::PutObjectResponse putObjectResponse = client.PutObject(putObjectArgs);
if (!putObjectResponse)
{
// 上传异常
std::cout << putObjectResponse.Error().String() << std::endl;
return -1;
}
return 0;
}
然后是CMakeLists.txt
cmake_minimum_required(VERSION 3.25)
project(demo)
find_package(miniocpp REQUIRED)
add_executable(demo main.cpp)
target_link_libraries(demo PRIVATE miniocpp::miniocpp)
target_compile_features(demo PUBLIC cxx_std_17)
编写完成之后我们可以执行命令cmake -B build -D CMAKE_PREFIX_PATH="程序包安装位置"
生成构建系统(当然如果你已经配置好了相关内容,也可以不用指定程序包安装位置),然后执行命令cmake --build build
生成可执行程序就可以了。
如果这篇文章对你有帮助,别忘了关注我啊,可能我还会写出更多对你有帮助的文章