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


Posted in Java/Android onApril 03, 2022

分享一个快速使用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内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
Java集成swagger文档组件
Jun 28 Java/Android
看完这篇文章获得一些java if优化技巧
Jul 15 Java/Android
java设计模式--三种工厂模式详解
Jul 21 Java/Android
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
解析探秘fescar分布式事务实现原理
Feb 28 Java/Android
Spring Boot DevTools 全局配置学习指南
Mar 31 Java/Android
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
Apr 13 Java/Android
Elasticsearch Recovery 详细介绍
Apr 19 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
Java 多线程并发FutureTask
Jun 28 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
Sep 23 Java/Android
SpringBoot整合Minio文件存储
Apr 03 #Java/Android
Java中Quartz高可用定时任务快速入门
Apr 03 #Java/Android
Spring Security使用单点登录的权限功能
Spring Boot 底层原理基础深度解析
Java 超详细讲解数据结构中的堆的应用
Java 数据结构七大排序使用分析
Java基础——Map集合
Apr 01 #Java/Android
You might like
基于php冒泡排序算法的深入理解
2013/06/09 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
原生js实现无缝轮播图效果
2021/01/28 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
python实现RSA加密(解密)算法
2016/02/17 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
Python发展简史 Python来历
2019/05/14 Python
Python模块的制作方法实例分析
2019/12/21 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
法雷奥SQA(electric)面试问题
2016/01/23 面试题
统计员岗位职责
2013/11/14 职场文书
历史专业个人求职信分享
2013/12/20 职场文书
医药个人求职信范文
2014/01/29 职场文书
少先队入队活动方案
2014/02/08 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python