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 相关文章推荐
详解SpringBoot异常处理流程及原理
Jun 21 Java/Android
Java并发编程之Executor接口的使用
Jun 21 Java/Android
Java如何实现树的同构?
Jun 22 Java/Android
SpringBoot整合JWT的入门指南
Jun 29 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
Java使用jmeter进行压力测试
Jul 09 Java/Android
Spring Cloud Gateway去掉url前缀
Jul 15 Java/Android
Java Spring 控制反转(IOC)容器详解
Oct 05 Java/Android
java多态注意项小结
Oct 16 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 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 模拟$_PUT实现代码
2010/03/15 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
vue实现循环切换动画
2018/10/17 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
python递归计算N!的方法
2015/05/05 Python
整理Python中的赋值运算符
2015/05/13 Python
python插入排序算法实例分析
2015/07/03 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
Python实现购物程序思路及代码
2017/07/24 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
Python读写Excel表格的方法
2021/03/02 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
视图的作用
2014/12/19 面试题
春节活动策划方案
2014/01/24 职场文书
自荐信的基本格式
2014/02/22 职场文书
测量工程专业求职信
2014/02/24 职场文书
圆明园观后感
2015/06/03 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
Vue Element plus使用方法梳理
2022/12/24 Vue.js