springboot整合最新版minio和minio的安装(完整教程,新人必看)

简介: 本文详细介绍了如何使用Docker安装配置最新版的MinIO,并展示了如何在Spring Boot应用中整合MinIO以及如何通过前端进行文件上传测试。

概述:这种东西,多写点,方便以后自己使用

第一步:docker安装配置minio

第一步:拉取镜像

docker pull minio/minio

第二步:创建用于存储MinIO数据的卷

MinIO需要一个用于持久化存储的卷。创建一个目录,并使用docker volume create命令创建一个Docker卷:

mkdir ~/minio-storage  # 在用户主目录下创建一个用于存储的目录
docker volume create minio-data  # 创建一个名为minio-data的Docker卷

如果是最新版minio直接就使用最后的那个命令创建容器

下面是老版的操作

第三步:运行MinIO Docker容器

docker run -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=your-access-key" -e "MINIO_SECRET_KEY=your-secret-key" -v minio-data:/data minio/minio server /data

替换your-access-keyyour-secret-key为您选择的自定义访问密钥和秘密密钥。

注意: Access key length should be at least 3, and secret key length at least 8 characters

就是your-access-key必须大于3,your-secret-key必须大于8

比如说,我要自定义 your-access-key为123456 和 your-secret-key为123456789

docker run -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=123456" -e "MINIO_SECRET_KEY=123456789" -v minio-data:/data minio/minio server /data

这样是可以运行的,但MINIO_ACCESS_KEY和MINIO_SECRET_KEY已经被弃用,建议使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD。同时,控制台端点正在监听一个动态端口(40753),建议使用--console-address ":PORT"来选择一个静态端口。

注意

新版mino是这样的。

API: http://172.17.0.3:9000 http://127.0.0.1:9000 api是9000端口 Console: http://172.17.0.3:40753 http://127.0.0.1:40753 console是40753端口 Documentation: https://docs.min.io

所以:真正的代码如下

比如说,我要自定义 MINIO_ROOT_USER为root 和 MINIO_ROOT_PASSWORD为123456789

docker run -p 9000:9000 -p 40753:40753 --name minio   -e "MINIO_ROOT_USER=root"   -e "MINIO_ROOT_PASSWORD=123456789"   -v minio-data:/data   minio/minio server /data --console-address ":40753"

第五步:访问minioWeb

通过浏览器访问 http://localhost:40753

可以看到非常的帅气

第六步:登录

输入之前设置好的 root 和 123456789

这里就成功的部署完毕了。

注意:倘若使用低版本去调用高版本的minio,可能还是要设置MINIO_ACCESS_KEY和MINIO_SECRET_KEY的

完美命令如下:

这里为了方便,我设置一样的,都是root和123456789 MINIO_ACCESS_KEY是root,MINIO_SECRET_KEY也是123456789

docker run -p 9000:9000 -p 40753:40753 --name minio   -e "MINIO_ROOT_USER=root"   -e "MINIO_ROOT_PASSWORD=123456789" -e "MINIO_ACCESS_KEY=root" -e "MINIO_SECRET_KEY=123456789"   -v minio-data:/data   minio/minio server /data --console-address ":40753"

创建一个buckets

比如说这里我就创建了一个叫user01的bucket

第二步:springboot整合minio

首先,在pom.xml文件中添加MinIO的依赖:

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.6</version>
</dependency>

application.properties文件中配置MinIO的相关参数:

minio.endpoint=http://localhost:9000
minio.access-key=YOUR_ACCESS_KEY
minio.secret-key=YOUR_SECRET_KEY
minio.bucket-name=your-bucket-name

由于我上面创建minio的时候已经设置好了,bucket-name=user01

server.port=8080
minio.endpoint=http://localhost:9000
minio.access-key=root
minio.secret-key=123456789
minio.bucket-name=user01

创建一个MinioConfig类,用于加载MinIO的配置信息:

package org.cyl.spaceutils.config;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MinioConfig {

    @Value("${minio.endpoint}")
    private String minioEndpoint;

    @Value("${minio.access-key}")
    private String minioAccessKey;

    @Value("${minio.secret-key}")
    private String minioSecretKey;

    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(minioEndpoint)
                .credentials(minioAccessKey, minioSecretKey)
                .build();
    }
}

在编写一个controller类即可

package org.cyl.spaceutils.controller;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

@SpringBootApplication
@RestController
public class MinioDemoController {

    @Autowired
    private MinioClient minioClient;

    @Value("${minio.bucket-name}")
    private String bucketName;

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            InputStream inputStream = file.getInputStream();
            minioClient.putObject(
                    PutObjectArgs.builder()
                            .bucket(bucketName)
                            .object(file.getOriginalFilename())
                            .stream(inputStream, inputStream.available(), -1)
                            .contentType(file.getContentType())
                            .build()
            );
            return "File uploaded successfully!";
        } catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
            e.printStackTrace();
            return "Error uploading file to MinIO: " + e.getMessage();
        }
    }

}

现在,你可以运行这个Spring Boot应用,并通过/upload接口上传文件到MinIO。

修改一下tomcat上传文件的大小配置

# 设置单个文件大小
spring.servlet.multipart.max-file-size= 50MB
# 设置单次请求文件的总大小
spring.servlet.multipart.max-request-size= 50MB

第三步:编写前端进行测试

前端代码

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" required>
        <button type="submit">上传</button>
    </form>
</body>
</html>

上传成功,查看minio控制页面

上传成功。

目录
相关文章
|
5月前
|
JavaScript 前端开发 Java
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
1514 0
|
16天前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
|
2月前
|
存储 Java API
SpringBoot + MinIO 实现文件切片极速上传技术
【8月更文挑战第19天】在现代互联网应用中,文件上传是一个常见且重要的功能。然而,随着文件体积的增大,传统的文件上传方式往往面临效率低下、耗时过长等问题。为了提升大文件上传的速度和效率,我们可以采用文件切片上传技术,并结合SpringBoot和MinIO来实现这一功能。
164 0
|
2月前
|
Java Maven
SpringBoot 引用仓库中没有 第三方包 - 将jar 包安装本地 maven
SpringBoot 引用仓库中没有 第三方包 - 将jar 包安装本地 maven
25 0
|
4月前
|
监控 JavaScript 前端开发
俩万搭建安装SpringBoot+VUE【视频+文档+源码】
俩万搭建安装SpringBoot+VUE【视频+文档+源码】
40 1
|
4月前
|
存储 开发框架 Java
SpringBoot整合Minio文件存储
该文档介绍了如何在公司开发框架中集成Minio以满足附件存储需求。由于规定附件服务器需与应用服务器分离且不使用云存储,Minio被选为解决方案。步骤包括:下载Minio部署包,创建配置文件(如`minio-service.xml`和`run.bat`),设置存储路径和访问凭据,安装服务并启动。之后,通过配置POM和YML文件以整合到项目中。此外,还提供了Minio工具类的初始化、上传、下载和删除文件的Java代码示例。
46 0
|
4月前
|
Java
springboot集成MinIO
springboot集成MinIO
|
4月前
|
缓存 Java Spring
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
41 0
|
4月前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
60 0
|
5月前
|
Java Spring
SpringBoot项目中整合MinIO
SpringBoot项目中整合MinIO。
142 5