Visual Studio 用aws-sdk-s3 上传和下载 minio的代码
时间: 2024-03-01 14:49:47 浏览: 114
上传和下载文件的代码
5星 · 资源好评率100%
以下是使用 aws-sdk-s3 和 Minio C++ 库在 Visual Studio 中上传和下载文件的示例代码:
```c++
#include <aws/core/Aws.h>
#include <aws/s3/S3Client.h>
#include <aws/s3/model/PutObjectRequest.h>
#include <aws/s3/model/GetObjectRequest.h>
#include <iostream>
#include <fstream>
#include <minio/minio.h>
#include <minio/minio_io.h>
using namespace Aws::S3;
using namespace Aws::S3::Model;
int main()
{
// 初始化 AWS SDK
Aws::SDKOptions options;
Aws::InitAPI(options);
// 建立 S3 客户端
Aws::Client::ClientConfiguration config;
config.scheme = Aws::Http::Scheme::HTTP;
config.endpointOverride = "localhost:9000"; // Minio 服务器地址和端口
config.verifySSL = false; // 关闭 SSL 验证
S3Client s3_client(config);
// 上传文件到 Minio
const std::string bucket_name = "my-bucket";
const std::string object_name = "my-object";
const std::string file_path = "path/to/my/file";
std::shared_ptr<std::iostream> file_stream = std::make_shared<std::fstream>(file_path.c_str(), std::ios_base::in | std::ios_base::binary);
PutObjectRequest put_request;
put_request.SetBucket(bucket_name);
put_request.SetKey(object_name);
put_request.SetBody(file_stream);
auto put_outcome = s3_client.PutObject(put_request);
if (put_outcome.IsSuccess())
{
std::cout << "File uploaded successfully!" << std::endl;
}
else
{
std::cout << "File upload failed: " << put_outcome.GetError().GetMessage() << std::endl;
}
// 下载文件从 Minio
const std::string downloaded_file_path = "path/to/my/downloaded/file";
GetObjectRequest get_request;
get_request.SetBucket(bucket_name);
get_request.SetKey(object_name);
auto get_outcome = s3_client.GetObject(get_request);
if (get_outcome.IsSuccess())
{
std::shared_ptr<Aws::IOStream> body_stream = get_outcome.GetResult().GetBody();
Minio::ObjectReadStream object_stream(body_stream);
std::ofstream downloaded_file(downloaded_file_path, std::ios_base::out | std::ios_base::binary);
downloaded_file << object_stream.rdbuf();
std::cout << "File downloaded successfully!" << std::endl;
}
else
{
std::cout << "File download failed: " << get_outcome.GetError().GetMessage() << std::endl;
}
// 关闭 AWS SDK
Aws::ShutdownAPI(options);
return 0;
}
```
请注意,此示例代码假设你已经在 Minio 上创建了一个名为 "my-bucket" 的存储桶,并且已经在本地计算机上安装了 Minio 服务器。你需要根据你的实际情况进行修改。
此外,请不要忘记在代码中包含必要的头文件,并将 AWS SDK 和 Minio C++ 库添加到项目中,并在项目属性中设置正确的库和头文件路径。
阅读全文