netcore 操作 minio

发布于:2025-02-11 ⋅ 阅读:(56) ⋅ 点赞:(0)

一、安装包

<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();
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到