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应用程序中管理和操作文件存储。希望这篇文章对你有所帮助,如果有任何问题或疑问,欢迎留言交流

目录
相关文章
|
XML 前端开发 Java
SpringBoot实现文件上传下载功能
本文介绍了如何使用SpringBoot实现文件上传与下载功能,涵盖配置和代码实现。包括Maven依赖配置(如`spring-boot-starter-web`和`spring-boot-starter-thymeleaf`)、前端HTML页面设计、WebConfig路径映射配置、YAML文件路径设置,以及核心的文件上传(通过`MultipartFile`处理)和下载(利用`ResponseEntity`返回文件流)功能的Java代码实现。文章由Colorful_WP撰写,内容详实,适合开发者学习参考。
1193 0
|
XML Java API
SpringBoot 整合 Minio
本文介绍了如何在服务器上安装并配置Minio服务,包括Minio的依赖、配置类以及基本操作。首先,通过Maven添加Minio依赖;接着,在`yml`文件中配置Minio的连接信息;然后,创建`MinIoClientConfig`类将MinioClient注入到Spring容器中;最后,定义`OSSFileService`接口及其实现类`OssFileServiceImpl`,实现文件上传、获取文件URL、临时访问URL和删除文件等操作。
529 2
|
存储 Java 文件存储
Spring Boot 3 整合 Minio 实现文件存储
本文介绍了如何使用 Spring Boot 3 整合 MinIO 实现文件存储服务。MinIO 是一款高性能的对象存储服务器,适合大规模数据存储与分析,支持多种部署环境且文档完备、开源免费。从 MinIO 的快速安装、配置文件公开访问,到 Spring Boot 中集成 MinIO 客户端的步骤,包括创建用户访问密钥、引入依赖包、添加配置信息、编写 MinIO 客户端配置类及上传和预览文件的服务代码。最后通过 Apifox 进行文件上传测试,并验证文件是否成功存储及预览功能是否正常。关注公众号“Harry技术”,回复 minio 获取源码地址。
1524 76
|
存储 Java 文件存储
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
本文介绍了如何基于Spring Boot 3和MinIO实现分布式文件存储。随着应用规模扩大,传统的单机文件存储方案难以应对大规模数据和高并发访问,分布式文件存储系统成为更好的选择。文章详细讲解了MinIO的安装、配置及与Spring Boot的整合步骤,包括Docker部署、MinIO控制台操作、Spring Boot项目中的依赖引入、配置类编写及工具类封装等内容。最后通过一个上传头像的接口示例展示了具体的开发和测试过程,强调了将API操作封装成通用工具类以提高代码复用性和可维护性的重要性。
2917 7
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
|
存储 Java Linux
SpringBoot × MinIO 极速开发指南:对象存储服务高可用实战
生成临时访问URL接口和文件预览其实是同一个方法,只是文件预览内定了七天访问,而这个方法可以自行制定,单位是秒。方法,所以返回的是地址信息,但是可以通过dubug看到Bucket中的属性,确实是当前所有桶信息。配置类中奖MinIOClient客户端注入到Springboot中。MinIO集群的在Linux上的部署可以参考:​​​​​​​。Nginx代理MinIO集群可以参考:​​​​​​​。从Bucket源码可以看出,并没有实现。
1141 0
|
XML Java Kotlin
springboot + minio + kkfile实现文件预览
本文介绍了如何在容器中安装和启动kkfileviewer,并通过Spring Boot集成MinIO实现文件上传与预览功能。首先,通过下载kkfileviewer源码并构建Docker镜像来部署文件预览服务。接着,在Spring Boot项目中添加MinIO依赖,配置MinIO客户端,并实现文件上传与获取预览链接的接口。最后,通过测试验证文件上传和预览功能的正确性。
1949 4
springboot + minio + kkfile实现文件预览
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
2171 5
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
1141 8
|
存储 前端开发 JavaScript
SpringBoot结合Minio实现文件切片极速上传
【10月更文挑战第21天】
1066 6