当前位置: 代码网 > it编程>编程语言>Java > Springboot集成Minio实现文件上传基本步骤

Springboot集成Minio实现文件上传基本步骤

2025年06月18日 Java 我要评论
一需要用到的有关minio的核心概念存储桶(bucket):类似于文件系统中的顶级目录,需提前创建。对象(object):存储在 minio 中的文件,每个对象有唯一的键(key)。预签名 url:临

一 需要用到的有关minio的核心概念

  • 存储桶(bucket):类似于文件系统中的顶级目录,需提前创建。
  • 对象(object):存储在 minio 中的文件,每个对象有唯一的键(key)。
  • 预签名 url:临时授权的 url,可控制访问权限和有效期。

二 springboot集成minio基本步骤

1 添加相关依赖

        <dependency>
            <groupid>io.minio</groupid>
            <artifactid>minio</artifactid>
            <version>8.2.1</version>
            <exclusions>
                <exclusion>
                    <groupid>com.squareup.okhttp3</groupid>
                    <artifactid>okhttp</artifactid>
                </exclusion>
                <exclusion>
                    <groupid>org.jetbrains.kotlin</groupid>
                    <artifactid>kotlin-stdlib</artifactid>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupid>com.squareup.okhttp3</groupid>
            <artifactid>okhttp</artifactid>
            <version>4.9.0</version>
        </dependency>

2 配置minio的连接信息

在application.yml中添加配置:

yaml
minio:
  endpoint: http://localhost:9000  # minio服务地址
  access-key: your-access-key        # 访问密钥
  secret-key: your-secret-key        # 秘密密钥
  bucket-name: your-bucket-name      # 默认存储桶名称

3 创建minio的配置类

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 endpoint;
    @value("${minio.access-key}")
    private string accesskey;
    @value("${minio.secret-key}")
    private string secretkey;
    @bean
    public minioclient minioclient() {
        return minioclient.builder()
                .endpoint(endpoint)
                .credentials(accesskey, secretkey)
                .build();
    }
}

4 (服务层)创建minio的服务类

主要实现文件上传,下载操作

public string upload(multipartfile file) throws exception {
        // 检查存储桶是否存在,不存在则创建
        boolean isexist = minioclient.bucketexists(bucketexistsargs.builder().bucket(bucketname).build());
        if (!isexist) {
            minioclient.makebucket(makebucketargs.builder().bucket(bucketname).build());
        }
    // 生成唯一文件名,避免中文和空格
        string originalfilename = file.getoriginalfilename();
        string filename = uuid.randomuuid().tostring() + "." +
                originalfilename.substring(originalfilename.lastindexof(".") + 1);
        // 1. 上传文件到minio
        minioclient.putobject(
                putobjectargs.builder()
                        .bucket(bucketname)
                        .object(filename)
                        .stream(file.getinputstream(), file.getsize(), -1)
                        .contenttype(file.getcontenttype())
                        .build()
        );
        return  url + "/" + bucketname + "/" + filename;
    }

5 (表现层)创建控制器

import org.springframework.beans.factory.annotation.autowired;
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.security.invalidkeyexception;
import java.security.nosuchalgorithmexception;
@restcontroller
public class fileuploadcontroller {
    @autowired
    private minioserviceimpl minioservice;

到此这篇关于springboot集成minio实现文件上传的文章就介绍到这了,更多相关springboot minio文件上传内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com