SpringBoot框架:集成Minio完成图片上传

一、导入依赖

  在pom文件中引入Minio依赖:

<!-- minio --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency>

二、配置信息

  在yml配置文件中添加minio的地址、用户名、密码等信息:

minio: url: http://ip:port accessKey: username secretKey: password

三、接口编写

  新建一个minio相关操作接口的controller类,代码如下:

package com.dl.wall.controller; import com.dl.wall.bean.ResultBean; import io.minio.MinioClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; import java.util.UUID; /** * minio相关接口 */ @RestController @RequestMapping("/File") public class MinioController { /** 配置文件中获取minio各项值 */ @Value("${minio.url}") private String url; @Value("${minio.accessKey}") private String accessKey; @Value("${minio.secretKey}") private String secretKey; /** * minio文件上传 * @param file * @return * @throws Exception */ @RequestMapping("/uploadFile") public ResultBean upload(@RequestParam("file") MultipartFile file) throws Exception { //初始化 MinioClient minioClient = new MinioClient(url, accessKey, secretKey); //得到文件流 InputStream is= file.getInputStream(); //使用uuid生成新的唯一文件名 String fileName = UUID.randomUUID().toString().replace("-","")+file.getOriginalFilename(); //获取文件类型 String contentType = file.getContentType(); //把文件放置Minio桶 minioClient.putObject("honorwall",fileName,is,contentType); //获取访问路径 String url = minioClient.presignedGetObject("honorwall", fileName); if(url != null){ //返回路径不为空,即上传文件成功 return new ResultBean(ResultBean.SUCCESS,"文件上传成功",url.split("\\?")[0]); }else{ //上传失败 return new ResultBean(ResultBean.FAIL,"文件上传失败",null); } } }

四、接口测试

  使用postman对该接口进行调试,通过post进行传参。

  

  上传成功,返回的结果为图片的访问路径(改为永久可访问后的图片可通过路径直接查看):

  

 


__EOF__

本文作者我命倾尘
本文链接https://www.cnblogs.com/guobin-/p/14683980.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   我命倾尘  阅读(2149)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2019-04-21 Python题集:2019春Python程序设计选修课习题笔记
点击右上角即可分享
微信分享提示