SpringBoot整合minio快速入门教程(代码示例)

 更新时间:2022年04月03日 10:44:55   作者:黄恒愉  
这篇文章主要介绍了SpringBoot整合minio快速入门实现文件上传和下载的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

分享一个快速使用springboot整合minio实现文件上传和下载的示例。前提是已经安装并运行minio服务,参考 minio快速入门文档

首先添加Minio的依赖

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

然后写一个controller类

这只是一个简单的demo,没有进行任何的封装,可以根据实际情况进行封装。

package com.file.server.controller;
import io.minio.MinioClient;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
@RestController
public class MinioController {
   private static String url = "http://127.0.0.1:9000";  //minio服务的IP端口
   private static String accessKey = "W2ZWITFFDWFM5TWS3WI9";  
   private static String secretKey = "dNx++XsRJpjmWVQHWv8djMCFJ0A3YXbEr4qfKHR+";
   
    //上传文件到minio服务
 @PostMapping("upload")
 public String upload(@RequestParam("fileName") MultipartFile file )  {
   try {
       MinioClient minioClient = new MinioClient(url, accessKey, secretKey);
       InputStream is= file.getInputStream(); //得到文件流
       String fileName = file.getOriginalFilename(); //文件名
       String contentType = file.getContentType();  //类型
       minioClient.putObject("file",fileName,is,contentType); //把文件放置Minio桶(文件夹)
       return  "上传成功";
     }catch (Exception e){
         return "上传失败";
     }
    }
    //下载minio服务的文件
    @GetMapping("download")
    public String download(HttpServletResponse response){
        try {
          MinioClient minioClient = new MinioClient(url, accessKey, secretKey);
          InputStream fileInputStream = minioClient.getObject("file", "test.jpg");
          response.setHeader("Content-Disposition", "attachment;filename=" + "test.jpg");
          response.setContentType("application/force-download");
          response.setCharacterEncoding("UTF-8");
          IOUtils.copy(fileInputStream,response.getOutputStream());
          return "下载完成";
        }catch (Exception e){
            return "下载失败";
        }
    }
    //获取minio文件的下载地址
    @GetMapping("url")
    public  String  getUrl(){
        try {
            MinioClient minioClient = new MinioClient(url, accessKey, secretKey);
            String url = minioClient.presignedGetObject("file", "test.jpg");
            return url;
        }catch (Exception e){
            return "获取失败";
        }
    }
}

到此这篇关于SpringBoot整合minio快速入门教程(代码示例)的文章就介绍到这了,更多相关SpringBoot整合minio内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis 一对一、一对多和多对多查询实例代码

    mybatis 一对一、一对多和多对多查询实例代码

    这篇文章主要介绍了mybatis 一对一、一对多和多对多查询的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Spring Boot中使用JDBC Templet的方法教程

    Spring Boot中使用JDBC Templet的方法教程

    这篇文章主要给大家介绍了关于在Spring Boot中使用JDBC Templet的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Java中synchronized的四种用法详解

    Java中synchronized的四种用法详解

    这篇文章主要介绍了Java中synchronized的四种用法详解,当我们处理多线程处理同步问题的时候就会用到synchronized这个关键字,下面介绍下synchronized的四种用法,需要的朋友可以参考下
    2024-01-01
  • 深入解析HashMap的put方法

    深入解析HashMap的put方法

    在Java集合中,HashMap的重要性不言而喻,作为一种存储键值对的数据结构,它在日常开发中有着非常多的应用场景,也是面试中的高频考点,本篇文章就来分析一下HashMap集合中的put方法
    2022-01-01
  • Java线程间共享与协作详细介绍

    Java线程间共享与协作详细介绍

    这篇文章主要介绍了Java线程间共享与协作详细介绍,Java 支持多个线程同时访问一个对象或者对象的成员变量,更多相关介绍需要的朋友可以参考一下
    2022-09-09
  • Spring Cloud微服务架构的构建:分布式配置中心(加密解密功能)

    Spring Cloud微服务架构的构建:分布式配置中心(加密解密功能)

    这篇文章主要给大家介绍了关于Spring Cloud微服务架构的构建:分布式配置中心(加密解密)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用具有一定的参考学习价值,需要的朋友可以参考下
    2018-05-05
  • 分布式任务调度xxl-job问题解决

    分布式任务调度xxl-job问题解决

    这篇文章主要为大家介绍了分布式任务调度xxl-job的问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多多多进步,早日升职加薪
    2022-03-03
  • 详解MyBatis的SqlSession获取流程

    详解MyBatis的SqlSession获取流程

    SqlSession的获取是通过SqlSessionFactory的openSession() 方法,那么具体的获取流程是什么,所以本文就给大家详细讲解一下MyBatis的SqlSession获取流程,需要的朋友可以参考下
    2023-07-07
  • 全面了解java byte数组与文件读写

    全面了解java byte数组与文件读写

    下面小编就为大家带来一篇全面了解java byte数组与文件读写。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • JAVA的Random类的用法详解

    JAVA的Random类的用法详解

    Random类主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家。
    2016-04-04

最新评论