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

IT 文章15秒前更新 小编
0 0 0

本文主要讲解关于ASP.NET Core上传文件到minio的实现示例相关内容,由优网导航(www.uonce.com)提供,欢迎关注收藏本站!

1.用到的依赖包—Minio

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

dotnet add package Minio --version 6.0.5

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

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

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

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

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

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中调用上传接口

控制台日志

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

浏览器访问minio图片

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

您可能感兴趣的文章:

  • asp.net core实现文件上传功能
  • ASP.NET Core文件上传与下载实例(多种上传方式)
  • 解决ASP.NET Core Mvc文件上传限制问题实例
  • asp.net core mvc实现文件上传实例
  • ASP.NET Core单文件和多文件上传并保存到服务端的方法
  • asp.net core集成kindeditor实现图片上传功能
  • asp.net core分块上传文件示例
  • ASP.NET Core实现文件上传和下载
  • ASP.NET Core实现多文件上传

相关推荐: Go与Java性能对比,Go语言未来能取代Java吗?

开篇:大厂面试的灵魂拷问与行业焦虑 前两年面某大厂时,技术负责人突然抛了个问题:“要是让你重构公司核心系统,选Go还是Java?” 我做了八年Java开发,第一反应是想强调Spring生态多成熟、企业级应用多稳,但对方紧接着打开的PPT让我瞬间慌了——有家金融…

© 版权声明

相关文章

暂无评论

暂无评论...