当前位置:网站首页>关于在core中使用minio对象存储
关于在core中使用minio对象存储
2022-08-08 23:49:00 【小兜全糖(Cx)】
一、Minio及背景
Minio是一个开源的分布式文件存储系统,它基于 Golang 编写,虽然轻量,却拥有着不错的高性能,可以将图片、视频、音乐、pdf这些文件存储到多个主机,可以存储到多个Linux,或者多个Windows,或者多个Mac,Minio中存储最大文件可以达到5TB。
任何类型的文件都是支持的,主要应用在微服务系统中。
二 Windows中安装minio
访问以下路径下载Windows版本的minio
https://dl.minio.io/server/minio/release/windows-amd64/minio.exe
https://min.io/download#/kubernetes
三 启动minio
minio.exe server d:/works
启动端口是9000
用户名以及密码是minioadmin/minioadmin
也可以通过设置环境变量来设置自定义的用户名密码
四 core 中使用minio完成文件的上传与下载
安装minio 的nuget包
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Minio;
using Minio.Exceptions;
namespace MinioCore.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class FileController : ControllerBase
{
private readonly ILogger<FileController> _logger;
public FileController(ILogger<FileController> logger)
{
_logger = logger;
}
[HttpPost("Upload")]
public IActionResult Upload(IFormFile formFile)
{
//1.创建MinioClient客户端
MinioClient minioClient = new MinioClient()
.WithEndpoint("127.0.0.1:9000")
.WithCredentials("minioadmin",
"minioadmin")
.Build();
//2.创建文件桶(数据库)
if (!minioClient.BucketExistsAsync("micservice").Result)
{
minioClient.MakeBucketAsync("micservice").Wait();
}
//3.上传文件(最大上传5TB的数据)
minioClient.PutObjectAsync("micservice", formFile.FileName, formFile.OpenReadStream(), formFile.Length).Wait();
_logger.LogInformation($"文件:{
formFile.FileName}上传到MinIO成功");
return new JsonResult("上传文件成功");
}
[HttpGet("Download")]
public IActionResult Download(string fileName)
{
FileStreamResult fileStreamResult = null;
try
{
// 1、创建MioIO客户端
MinioClient minioClient = new MinioClient("127.0.0.1:9000", "minioadmin", "minioadmin");
var imgStream = new MemoryStream();
// 2、下载图片
minioClient.GetObjectAsync("micservice", fileName, stream => stream.CopyTo(imgStream)).Wait();
imgStream.Position = 0;
fileStreamResult = new FileStreamResult(imgStream, "image/jpg");
}
catch (MinioException e)
{
_logger.LogInformation($"文件:{
fileName}下载失败");
}
return fileStreamResult;
}
}
}
参考官网
https://docs.min.io/docs/dotnet-client-quickstart-guide.html
边栏推荐
猜你喜欢
随机推荐
51nod2884
Get the start time and end time of the current month half a year ago
获取一星期前的时间 n-1 为含当天 一周7天 7-1
启牛商学院靠不靠谱呢?证券账户开了安全吗
跨域请求浏览器无法显示set-cookie,坑了我一晚上
浏览器插件:插件推荐
手机国债账户开户安全吗?
并发编程第4篇,锁的分类
【LaTex异常与错误】 - 公式编号的参考引用命令\eqref发生错误Undefined control sequence——可能是因为没加载宏包amsmath
生成二维码容错级别的问题
php convert timestamp to just, minutes ago, hours ago, days ago format
MySQL 高级知识【 MyISAM 读锁写锁限制】
[GYCTF2020]Ezsqli-1|SQL注入
360“卸载不下去”引热议 周鸿祎重申是谣言:步骤繁琐出于安全考虑
MES对接Simba实现展讯平台 IMEI 写号与耦合测试
pytorch常用代码
[YOLOv5] 6.0 environment construction (updated from time to time)
有了国产 DevOps 工具 ,还怕数字化转型成本高?
如何学好编程
RHCSA--第二天