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实现分布式事务的三种方案
Jun 11 Java/Android
springboot中一些比较常用的注解总结
Jun 11 Java/Android
教你用Java在个人电脑上实现微信扫码支付
Jun 13 Java/Android
Java实现斗地主之洗牌发牌
Jun 14 Java/Android
Java中PriorityQueue实现最小堆和最大堆的用法
Jun 27 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
Java使用httpRequest+Jsoup爬取红蓝球号码
Jul 02 Java/Android
Java实现房屋出租系统详解
Oct 05 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
关于ObjectUtils.isEmpty() 和 null 的区别
Feb 28 Java/Android
零基础学java之带返回值的方法的定义和调用
Apr 10 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 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
PHP4之真OO
2006/10/09 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python编程中的反模式实例分析
2014/12/08 Python
Python通过select实现异步IO的方法
2015/06/04 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
django基础学习之send_mail功能
2019/08/07 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
基层党员公开承诺书
2014/05/29 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python