首页 > 其他分享 >springboot集成minIO

springboot集成minIO

时间:2024-07-03 17:55:19浏览次数:15  
标签:集成 文件 springboot bucket jpg test public minIO

文件系统:负责管理和存储文件的系统软件。操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件

minIO:轻量级服务分布式文件系统,适合存储非机构化数据。采用去中心化共享架构,结点之间是对等关系。

 

端口号为9000,初次登录账号密码都是minioadmin

 

minIO中使用bucket的概念来分隔管理文件,当然我们也可以在设置object的时候通过2024/7/3/myPic.jpg在bucket中生成对应的文件夹方便文件管理

以下是通过minIO实现的文件管理

这里使用的是很经典的建造者模式,bucket代表你所选择的桶,object代表你要存放在当前桶的具体名称/具体位置,filename则是你要存放在文件在当前磁盘的具体位置。

public class MinIOtest {
    MinioClient minioClient = MinioClient.builder()
            .endpoint("http://192.168.101.65:9000")
            .credentials("minioadmin", "minioadmin")
            .build();

    @Test
    public void upload() {
        try {
            minioClient.uploadObject(
                    UploadObjectArgs.builder()
                            .bucket("test")
                            .object("pic.jpg")
                            .filename("C:\\Users\\17900\\Pictures\\74721741_p0_master1200.jpg")
                            .build()
            );
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void delete() {
        try {
            minioClient.removeObject(
                    RemoveObjectArgs.builder()
                            .bucket("test")
                            .object("pic.jpg")
                            .build());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Test
    public void search() {
        try {
            FilterInputStream test = minioClient.getObject(
                    GetObjectArgs.builder()
                            .bucket("test")
                            .object("pic.jpg")
                            .build()
            );
            // 指定输出流输出
            FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\17900\\Pictures\\74721741_p0_master1200.jpg"));
            IOUtils.copy(test, fileOutputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

当我们使用springboot接受一个MultipartFile文件时,苦于无法直接传递他的绝对路径以便于后面filename的使用。

我们通过File.createTempFile()来生成一个临时文件,再将上述MultipartFile文件通过transferTo将文件内容传给这个临时文件。这时我们可以把这个临时文件上传给远程minIO以供保存,

下述示例中,我们可以通过absolutePath将文件传递给fileName从而实现图片远程保存。

    @ApiOperation("上传文件接口")
    @RequestMapping(value = "/upload/coursefile",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public UploadFileResultDto uploadCoursefile(@RequestPart("filedata")MultipartFile filedata) throws IOException {
        File tempFile=File.createTempFile("minio", "temp");
        filedata.transferTo(tempFile);
        String absolutePath = tempFile.getAbsolutePath();
        return mediaFileService.upload(filedata,absolutePath);
    }

 

标签:集成,文件,springboot,bucket,jpg,test,public,minIO
From: https://www.cnblogs.com/kun1790051360/p/18280734

相关文章

  • 微服务数据流的协同:Eureka与Spring Cloud Data Flow集成指南
    微服务数据流的协同:Eureka与SpringCloudDataFlow集成指南在构建基于SpringCloud的微服务架构时,服务发现和数据流处理是两个关键的组成部分。Eureka作为服务发现工具,而SpringCloudDataFlow提供了数据流处理的能力。本文将详细介绍如何将Eureka与SpringCloudDataFl......
  • Springboot+Vue加密通信
    前言本文旨在给出Springboot+Vue框架下的加密通信具体实现,同时为照顾非行业内/初学读者,第一小节浅显的解释下加解密方式,老鸟直接跳过。1加解密方式常见的加解密方式大概分成对称加密、非对称加密与信息摘要算法三类。下面仅从使用角度简单介绍下加解密方式:1.1对称......
  • ETL数据集成丨使用ETLCloud实现MySQL与Greenplum数据同步
    我们在进行数据集成时,MySQL和Greenplum是比较常见的两个数据库,我们可以通过ETLCloud数据集成平台,可以快速实现MySQL数据库与数仓数据库(Greenplum)的数据同步。MySQL数据库:优点:轻量级与高性能:MySQL体积小、启动快,对资源消耗相对较低,适合处理高并发的OLTP(在线事务处理)场景。开源......
  • 模拟集成电路设计系列博客——8.4.1 全数字锁相环介绍
    8.4.1全数字锁相环介绍随着CMOS工艺的演进,数字电路的尺寸得到不断的微缩,工作电压不断的降低,这使得模拟PLL受到了许多挑战,如环路滤波器中无源器件尺寸庞大,即使在更先进的CMOS工艺下也无法缩小,如果改为片外器件又会引入额外噪声,并增加pad需求和PCB面积,如下图所示,一个典型的模拟PLL......
  • springboot使用注解方式打印方法日志
    springboot使用注解方式打印方法日志,可以很方便的打印日志,通用性很强。耦合很低,很好。作为程序员的我不废话,咱们直接上代码先创建个注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceShowLog{/***日志描......
  • springboot的MultipartFile转File读取
    在SpringBoot中,处理文件上传时,MultipartFile接口被用来封装上传的文件信息。如果需要将MultipartFile转换为Java标准的File对象进行读取。以下是具体的操作流程:1.创建临时文件        首先,需要将接收到的MultipartFile对象转换为一个临时File对象。      ......
  • springboot-mybatis-db2
    工程pom.xml文件增加如下依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency>&......
  • 《企业实战分享 · 对象存储服务OSS、S3、MinIO》
    ......
  • springboot+手机商城网站-计算机毕业设计源码201029
    摘 要在信息飞速发展的今天,网络已成为人们重要的信息交流平台。手机店每天都有大量的手机商品需要通过网络发布,为此,本人开发了一个基于springboot手机商城网站。本系统采用跨平台的JAVA语言开发,利用springboot框架进行逻辑控制,MySQL数据库存储数据,最后Tomcat服务器完成发布......
  • Springboot整合Apollo
    一、Apollo作用随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越......