一、安装包
<PackageReference Include="Minio" Version="5.0.2" />
注意:我这里用的是5.0.2 高版6.0.0+当前写法会不生效
依赖注入:
/*Minio*/
builder.Services.AddSingleton<IMinioClient>(pro =>
{
return new MinioClient()
.WithEndpoint("192.168.31.143:9002")
.WithCredentials("bpW1vooVKfxhkIEpvkav", "KecP0IBTmgkyblpp8yswFIskppkDIKORrInXUoKT")
.Build();
});
备注:Access Keys在这里生成
二、上传图片
/*Minio*/
private readonly IMinioClient _minioClient;
public HelloQuery(IMinioClient minioClient)
{
_minioClient = minioClient;
}
private async Task<string> UploadFileToMinio(HelloUploadFileCommand command)
{
var fileName = Guid.NewGuid().ToString("N") + Path.GetExtension(command.FileName);
var putObjectArgs = new PutObjectArgs()
.WithBucket("hello").WithObject(fileName).WithStreamData(new MemoryStream(command.Data)).WithObjectSize(command.Data.Length);
var putResult = await _minioClient.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
return fileName;
}
三、获取文件
/*Minio*/
private readonly IMinioClient _minioClient;
public HelloQuery(IMinioClient minioClient)
{
_minioClient = minioClient;
}
public async Task<byte[]> GetFileBytesAsync(string cloudFileName)
{
using (var memory = new MemoryStream())
{
GetObjectArgs getObjectArgs = new GetObjectArgs()
.WithBucket("hello")
.WithObject(cloudFileName)
.WithCallbackStream((stream) =>
{
stream.CopyTo(memory);
});
var state = await _minioClient.GetObjectAsync(getObjectArgs);
return memory.ToArray();
}
}