Spring Boot整合MinIO实现文件上传和下载

简介: 家人们啦!,上篇文章了,我们讲了如何使用docker-compose快速部署MinIO,在今天的文章中,我将向大家介绍如何将Spring Boot与MinIO进行无缝整合,以便高效地管理和操作文件存储。通过这个整合,你将能够轻松地在Spring Boot应用程序中实现文件的上传和下载等功能。让我们开始吧

minio.jpg

家人们啦!,上篇文章了,我们讲了如何使用docker-compose快速部署MinIO,在今天的文章中,我将向大家介绍如何将Spring Boot与MinIO进行无缝整合,以便高效地管理和操作文件存储。通过这个整合,你将能够轻松地在Spring Boot应用程序中实现文件的上传和下载等功能。让我们开始吧

在这给家人们准备了一些java书籍
50d284b4169b46db9b03158b47e5769f.png

请关注微信公众号 修己xj 发送 601 获取阿里云盘分享链接

添加MinIO依赖

首先,我们需要在Spring Boot项目的pom.xml文件中添加MinIO的依赖。在这个例子中,我们使用io.minio.MinioClient作为MinIO客户端的依赖。请确保你已经在pom.xml文件中添加以下依赖:

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

配置MinIO连接信息

接下来,我们需要在Spring Boot项目的配置文件中添加MinIO的连接信息。在application.yml文件中添加以下配置:

minio:
  endpoint: http://192.168.10.106:9000
  accessKey: minioadmin
  secretKey: minioadmin
  bucketName: xiuji

我们这儿上传的桶是固定的,所以直接配置在配置文件中了

实现MinIO文件操作服务

代码如下:

_20230712070148.png

MinioConfig

import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
   
   

    private String endpoint;

    private String accessKey;

    private String secretKey;

    private String bucketName;


    @Bean
    public MinioClient minioClient() {
   
   
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }
}

MinioService

import io.minio.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.UUID;


@Service
public class MinioService {
   
   
    @Autowired
    private MinioClient minioClient;
    @Autowired
    private MinioConfig minioConfig;


    public void createBucket(String bucketName) throws Exception{
   
   
        if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
   
   
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
        }
    }
    public String uploadFile(String bucketName, MultipartFile file) throws Exception {
   
   
        String filename = UUID.randomUUID().toString()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        minioClient.putObject(PutObjectArgs.builder()
                .bucket(bucketName)
                .object(filename)
                .stream(file.getInputStream(), file.getInputStream().available(), -1)
                .contentType(file.getContentType())
                .build());
        return minioConfig.getEndpoint() + "/" + bucketName + "/" + filename;
    }

    public InputStream downloadFile(String bucketName, String filename) throws Exception {
   
   
        return minioClient.getObject(GetObjectArgs.builder()
                .bucket(bucketName)
                .object(filename)
                .build());
    }
}

FileController


import cn.xj.file.minio.MinioConfig;
import cn.xj.file.minio.MinioService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;

@RestController
public class FileController {
   
   


    @Resource
    private MinioService minioService;

    @Resource
    private MinioConfig minioConfig;

    @PostMapping("/file/upload")
    public String upload(MultipartFile file) throws Exception {
   
   
        return minioService.uploadFile(minioConfig.getBucketName(),file);
    }

}

测试文件上传查看

图片上传
_20230712064449.png

复制地址到浏览器查看:

_20230712064422.png

pdf上传

_20230712064719.png

复制地址到浏览器查看:

_20230712064738.png

文件上传:

_20230712070906.png

复制地址到浏览器下载:

_20230712065323.png

结语

在本文中,我们介绍了如何使用Spring Boot整合MinIO,实现了文件的上传、下载等操作。通过这个整合,你可以方便地在Spring Boot应用程序中管理和操作文件存储。希望这篇文章对你有所帮助,如果有任何问题或疑问,欢迎留言交流

目录
相关文章
|
1天前
|
Java 数据库连接 mybatis
springboot访问jsp页面变成直接下载?
springboot访问jsp页面变成直接下载?
78 0
|
1天前
|
JavaScript 前端开发 Java
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
563 0
|
1天前
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
709 2
|
1天前
|
Java Nacos Docker
Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)
Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)
86 0
|
1天前
|
存储 Java 大数据
Springboot整合Minio实现文件上传和下载
Minio是一个灵活、高性能、开源的对象存储解决方案,适用于各种存储需求,并可以与云计算、容器化、大数据和应用程序集成。它为用户提供了自主控制和可扩展性,使其成为一个强大的存储解决方案。
248 0
|
1天前
|
JavaScript 小程序 Java
基于Java+SpringBoot+Vue的摄影素材分享网站的设计与实现(亮点:活动报名、点赞评论、图片下载、视频下载、在线观看)
基于Java+SpringBoot+Vue的摄影素材分享网站的设计与实现(亮点:活动报名、点赞评论、图片下载、视频下载、在线观看)
60 0
|
1天前
|
JSON 前端开发 Java
Spring mvc-文件上传与JSON-学习笔记
Spring mvc-文件上传与JSON-学习笔记
42 2
|
1天前
|
Java Linux 开发工具
MinIO【部署 01】MinIO安装及SpringBoot集成简单测试
MinIO【部署 01】MinIO安装及SpringBoot集成简单测试
142 0
|
1天前
|
JavaScript 前端开发 Java
Spring Boot中Node.js的下载与Vue CLI在IDEA中的部署及使用(图文解释 简单易懂)
Spring Boot中Node.js的下载与Vue CLI在IDEA中的部署及使用(图文解释 简单易懂)
52 0
|
1天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
56 0