ASP.NET Core上传文件到minio的实现示例

 更新时间:2025年09月03日 08:50:02   作者:冷冷的菜哥  
本文主要介绍了ASP.NET Core上传文件到minio的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.用到的依赖包—Minio

使用命令添加依赖,或者使用Nugui搜索minio依赖后添加到指定项目中

dotnet add package Minio --version 6.0.5

我这里是使用了JetBrains Rider,这工具其实也挺好使的,尤其对于我本身写java的人来说,很容易习惯,无非就是占用内存比起vs code要高不少。

如果是用vs code,需要先安装nug包管理插件——NuGet Package Manager GUI

使用command+shift+p(macOS)或者ctrl+shift+p(Windows),输入nug,然后搜索即可

2.相关代码

    [HttpPost("upload/single")]
    [ProducesResponseType(typeof(CommonResult<FileUploadResp>), StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status200OK)]
    public async Task<IActionResult> PostUploadFileMinio(string? bucket, IFormFile file)
    {
        if (file is not { Length: > 0 })
        {
            return Ok(CommonResult<string>.Failed(500, "文件不能为空"));
        }

        _service._logger.LogDebug("上传的文件信息==={file}", JsonHelper.Serialize(file));
        var response = await _service.UploadFile(bucket, file);
        return Ok(CommonResult<FileUploadResp>.Success("上传成功", response));
    }
public async Task<FileUploadResp> UploadFile(string? bucket, IFormFile file)
    {
        bucket ??= "test";
        try
        {
            var safeFileName = Path.GetFileName(file.FileName);
            safeFileName = GenerateUniqueFileName(safeFileName);

            await using var stream = file.OpenReadStream();
            await _minioClient.PutObjectAsync(new PutObjectArgs()
                .WithBucket(bucket)
                .WithObject(safeFileName)
                .WithStreamData(stream)
                .WithObjectSize(file.Length)
                .WithContentType(file.ContentType)
            );

            var endpoint = _minioClient.Config.Endpoint;
            if (!Uri.TryCreate(endpoint, UriKind.Absolute, out var uri))
            {
                _logger.LogError("minio的endpoint无效==={uri}", uri);
                throw new ArgumentException("minio端点无效");
            }

            var fileUrl = $"{endpoint}/{bucket}/{safeFileName}";
            var resp = new FileUploadResp(safeFileName, fileUrl);
            _logger.LogDebug("文件上传成功==={resp}", JsonHelper.Serialize(resp));
            return resp;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "minio文件上传异常");
            throw new Model.CusException.MinioException(500, "文件上传失败,稍后重试");
        }
    }

3.上传测试

在swagger中调用上传接口

控制台日志

浏览器访问minio图片

到此这篇关于ASP.NET Core上传文件到minio的实现示例的文章就介绍到这了,更多相关ASP.NET Core上传文件到minio内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • asp.net(C#)遍历memcached缓存对象

    asp.net(C#)遍历memcached缓存对象

    出于性能考虑,memcached没有提供遍历功能,不过我们可以通过以下两个stats命令得到所有的缓存对象。
    2010-03-03
  • .NET CORE 鉴权的实现示例

    .NET CORE 鉴权的实现示例

    本文主要介绍了.NET CORE 鉴权的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Asp.Net Mvc2 增删改查DEMO代码

    Asp.Net Mvc2 增删改查DEMO代码

    接触mvc也有一段时间了(2.0),也看到园子里很多人在学习,自己也在园子里面看过前辈们写的博客,确实受益匪浅。本文写的都是基础中的基础,仅供想学习MVC的新手们入门之作
    2012-10-10
  • 微软发布的Data Access Application Block的使用代码

    微软发布的Data Access Application Block的使用代码

    微软发布的Data Access Application Block的使用代码...
    2007-04-04
  • 从ASP.NET Core3.1迁移到5.0的方法

    从ASP.NET Core3.1迁移到5.0的方法

    这篇文章主要介绍了从ASP.NET Core3.1迁移到5.0的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • ASP.NET Core使用固定窗口限流

    ASP.NET Core使用固定窗口限流

    本文详细讲解了ASP.NET Core使用固定窗口限流的算法实现,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • asp.net身份验证方式介绍

    asp.net身份验证方式介绍

    asp.net提供了3种认证方式: windows身份验证, Forms验证和Passport验证
    2012-06-06
  • asp.net 反射减少代码书写量

    asp.net 反射减少代码书写量

    还记得三层吗?没错 今天就讲我们在写三层的时候使用反射来减少代码的书写量
    2013-06-06
  • javascript实现listbox左右移动实现代码

    javascript实现listbox左右移动实现代码

    javascript实现listbox左右移动实现代码,需要的朋友可以参考下。
    2010-05-05
  • asp.net HttpWebRequest自动识别网页编码

    asp.net HttpWebRequest自动识别网页编码

    HttpWebRequest获取网页源代码时自动识别网页编码,通过读取页面中的charset和读取http头中的编码信息获取页面的编码,基本可以正确获取网页编码
    2008-09-09

最新评论