Java 上传文件到MinIO服务器上

这篇具有很好参考价值的文章主要介绍了Java 上传文件到MinIO服务器上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、MinIO配置

主界面:

java minio上传,SpringBoot,java,spring boot,okhttp

2.创建桶的文件路径

你可以设置任意想要配置的路径

java minio上传,SpringBoot,java,spring boot,okhttp

 3.管理桶权限

java minio上传,SpringBoot,java,spring boot,okhttp

这里Prefix写 * 是为了匹配所有请求路径
Access: readonly就可以通过url访问图片了。

二、SpringBoot Maven项目:

导入坐标: 

        <!--minio本地文件存储依赖-->
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.3.7</version>
        </dependency>

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.8.1</version>
        </dependency>

三、配置application.yml文件

#minio配置
minio:
  oss:
    endpoint: http://192.168.0.101:9000 
    accessKey: minioadmin
    secretKey: minioadmin
    bucketName: 桶名称 

四、编写读取配置类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@Data
@ConfigurationProperties(prefix = "minio.oss")
public class MinioProperties {
    private String endpoint;
    private String accessKey;
    private String secretKey;
    private String bucketName;

}

五、创建工具类

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/***
 * Minio工具类
 */
@Component
public class MinioUtils {
    @Autowired
    private MinioProperties minioProperties;

    /**
     * 实现上传图片到Minio
     */
    public String upload(MultipartFile file) throws IOException, ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        //获取Minio的配置参数
        String endpoint = minioProperties.getEndpoint();
        String accessKey = minioProperties.getAccessKey();
        String secretKey = minioProperties.getSecretKey();
        String bucketName = minioProperties.getBucketName();

        // 获取上传的文件的输入流
        InputStream inputStream = file.getInputStream();


        //将文件上传到Minio中
        //1.获取minio对象
        MinioClient minioClient =
                MinioClient.builder()
                        .endpoint(endpoint)
                        .credentials(accessKey, secretKey)
                        .build();
        // 检查存储桶是否已经存在
        boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
        if (isExist) {
            System.out.println("Bucket already exists.");
        } else {
            // 创建一个名为 huike-crm 的存储桶,用于存储照片的zip文件。
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
        }

        // 避免文件覆盖 生成日期文件夹格式+文件 :年/月/日 + 文件名
        String originalFilename = file.getOriginalFilename(); //获取原始文件名
        //拼接生成新的UUID形式的文件名
        String objectName = new SimpleDateFormat("yyyy/MM/dd/").format(new Date()) +
                UUID.randomUUID().toString().replaceAll("-", "")
                + originalFilename.substring(originalFilename.lastIndexOf("."));
        //2.通过Minio对象将图片上传到minio桶中
        // 使用putObject上传一个文件到存储桶中。
        PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)
                .bucket(bucketName)
                .contentType(file.getContentType())
                .stream(file.getInputStream(), file.getSize(), -1).build();
        minioClient.putObject(objectArgs);
        
        //组装桶中文件的访问url
        String resUrl = endpoint + "/" + bucketName + "/" + objectName;
        return resUrl;
    }
}

六、controller调用文章来源地址https://www.toymoban.com/news/detail-719945.html

  //将文件存储到Minio中
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws Exception {
        log.info("文件上传{}", image);
        String url = minioUtils.upload(image); //将图片上传到Minio中
        log.info("文件上传ok,{}", url);
        return Result.success(url);
    }

到了这里,关于Java 上传文件到MinIO服务器上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java使用MinIO库进行存储服务器的使用

    导入相关库:首先,在 Java 项目中,你需要导入与存储服务器通信所需的库。对于 minIO,你可以使用 MinIO Java 客户端库。你可以通过将以下依赖项添加到 Maven 项目的 pom.xml 文件中引入该库: 创建连接:使用提供的存储服务器的访问密钥和密码,创建与存储服务器的连接。以

    2024年02月14日
    浏览(30)
  • 图片、文件资源服务器(minio服务器)

    1.MinioConfig配置类 2.MinioUtil工具类 3.对应使用方法

    2024年02月11日
    浏览(43)
  • minio文件服务器开启https

    一、准备证书 你要有https安全证书,我的是适用于nginx的证书 私钥  xxxx.key 公钥  xxxx.pem 二、上传证书到minio服务器 然后看看你的minio docker 有没有把 /root/.minio 挂载在主机上,如果有那么把两个证书文件放在/root/.minio/certs目录里面。 三、重启生效 最后重启minio容器就行了 四

    2024年02月10日
    浏览(40)
  • MinIO文件服务器,从安装到使用

    以往的项目,用的比较多的OSS服务是腾讯云和阿里云的存储服务,不过从去年到今年,最近的几个项目,普遍要使用Minio,所以我在开发服务器和测试服务器上都装上了minio 一、首先minio的安装 MInIO的安装有很多方法、单实例的、集群分布式的、docker部署的、支持k8s的,我们使

    2024年02月06日
    浏览(28)
  • Minio服务器如何设置默认文件大小

    在Minio服务器中,可以通过修改配置文件来设置默认的文件大小限制。 要更改默认文件大小限制,您可以按照以下步骤进行操作: 打开Minio服务器的配置文件。该文件通常位于 /etc/sysconfig/minio 或 /etc/default/minio (对于Ubuntu系统) 在配置文件中找到 MINIO_HTTP.Addr 一行,这是Min

    2024年02月10日
    浏览(36)
  • Java操作MinIO实现文件的上传和删除。

     文章解决的问题:将本地Java项目resources目录下的一个PNG图片上传到MinIO,然后将上传的图片删除。 目录 一、MinIO的安装: ​二、安装与开启服务:  三、MinIO的使用: 四、Java操作MinIO: 官网地址:MinIO | High Performance, Kubernetes Native Object Storage 选择下载win serve版本即可: 1、

    2024年02月13日
    浏览(32)
  • Java大文件分片上传(minio版),超详细

    本文使用spring boot 结合minio文件服务做的大文件分片上传,思路:①:初始化文件调用后端接口,后端再调用minio把文件分片成几份,生成每个分片的minio上传url②:把提起分片好的文件依次调用上一把返回的url ③:调用合并分片文件接口,完成上传 PS:文件并未经过后端服务

    2024年02月07日
    浏览(35)
  • Java实现minio上传、下载、删除文件,支持https访问

    MinIO 是一款高性能、分布式的对象存储系统,Minio是基于Go语言编写的对象存储服务,适合于存储大容量非结构化的数据,例如图片、音频、视频、备份数据等 , 传统对象存储用例(例如辅助存储,灾难恢复和归档)方面表现出色。 导入minio依赖包 application.yml配置文件 配置

    2024年02月05日
    浏览(42)
  • 分布式文件服务器——Windows环境MinIO的三种部署模式

    上节简单聊到MinIO:分布式文件存储服务——初识MinIO-CSDN博客,但没具化,本节开始展开在Windows环境下 MinIO的三种部署模式: 单机单节点、单机纠删码、集群模式 。 部署的几种模式简要概括 所谓单机单节点模式:即MinIO服务只部署到一台机器上,且只挂载一块磁盘(目录)

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包