Springboot项目集成Minio文件服务器(下)

1、配置依赖
在pom文件里面配置Minio的相关依赖。

     <!--添加minio的依赖--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>7.0.2</version></dependency>

2、创建实体类
创建一个实体类来关联yml文件并获取其中的配置。


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @title MinioProp* @Description 与yml文件里面的配置关联*/@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProp {/*** 连接地址*/private String endpoint;/*** 用户名*/private String accesskey;/*** 密码*/private String secretkey;/*** 桶名*/private String bucketName;public String getEndpoint() {return endpoint;}public void setEndpoint(String endpoint) {this.endpoint = endpoint;}public String getAccesskey() {return accesskey;}public void setAccesskey(String accesskey) {this.accesskey = accesskey;}public String getSecretkey() {return secretkey;}public void setSecretkey(String secretkey) {this.secretkey = secretkey;}public String getBucketName() {return bucketName;}public void setBucketName(String bucketName) {this.bucketName = bucketName;}@Overridepublic String toString() {return "MinioProp{" +"endpoint='" + endpoint + '\'' +", accesskey='" + accesskey + '\'' +", secretkey='" + secretkey + '\'' +", bucketName='" + bucketName + '\'' +'}';}
}

3、配置MinioConfig类
配置minio的配置工具并获取minioClient。

import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @title MinioConfig* @Description minio配置工具*/
@Configuration
@EnableConfigurationProperties(MinioProp.class)
public class MinioConfig {@Autowiredprivate MinioProp minioProp;/*** @title minioClient* @Description 获取MinioClient* @auther wxt.dly* @return* @throws InvalidPortException* @throws InvalidEndpointException*/@Beanpublic MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {return new MinioClient(minioProp.getEndpoint(),minioProp.getAccesskey(),minioProp.getSecretkey());}
}

4、配置MinioUtils工具类


import com.fds.common.config.minio.MinioProp;
import com.fds.common.utils.StringUtils;
import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import io.minio.errors.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.PostConstruct;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;/*** @title MinioUtils* @Description minio工具类*/
@Component
public class MinioUtils {@Autowiredprivate MinioProp minioProp;@Autowiredprivate MinioClient minioClient;@PostConstructpublic void init() throws InvalidPortException, InvalidEndpointException {minioClient = new MinioClient(minioProp.getEndpoint(),minioProp.getAccesskey(),minioProp.getSecretkey());}/*** @title bucketExists* @Description 判断bucket是否存在* @param bucketName* @return* @throws Exception*/public boolean bucketExists(String bucketName) throws Exception{return minioClient.bucketExists(bucketName);}/*** @title createBucket* @Description 创建bucket* @param bucketName* @throws Exception*/public void createBucket(String bucketName) throws Exception{boolean isExist = minioClient.bucketExists(bucketName);if (!isExist){minioClient.makeBucket(bucketName);}}/*** @title fileUpload* @Description 文件上传* @param bucketName* @param multipartFile* @param fileName*/public void fileUpload(String bucketName, MultipartFile multipartFile,String fileName) throws Exception {//PutObjectOptions 上传配置(文件大小,内存中文件分片大小)PutObjectOptions putObjectOptions = new PutObjectOptions(multipartFile.getSize(), PutObjectOptions.MIN_MULTIPART_SIZE);//文件的 contentTypeputObjectOptions.setContentType(multipartFile.getContentType());minioClient.putObject(bucketName,fileName,multipartFile.getInputStream(),putObjectOptions);}/*** @title fileUpload* @description 文件上传* @param bucketName* @param objectName* @param fileName* @throws Exception*/public void fileUpload(String bucketName, String objectName,String fileName)throws Exception{minioClient.putObject(bucketName,objectName,fileName,null);}/*** @title removeFile* @Description 删除文件* @param objectName* @return*/public boolean removeFile(String objectName){boolean flag = true;try {minioClient.removeObject(minioProp.getBucketName(),objectName);} catch (Exception e) {flag=false;}return flag;}/*** @title downloadFile* @Description 下载文件* @param fileName* @param originalName* @param response* @throws Exception*/public void downloadFile(String fileName, String originalName, HttpServletResponse response) throws Exception{InputStream file = minioClient.getObject(minioProp.getBucketName(), fileName);String filename = new String(fileName.getBytes("ISO8859-1"), StandardCharsets.UTF_8);if (StringUtils.isNotEmpty(originalName)){fileName = originalName;}response.setHeader("Content-Disposition","attachment;filename=" + filename);ServletOutputStream servletOutputStream = response.getOutputStream();int len;byte[] buffer = new byte[1024];while((len=file.read(buffer))>0){servletOutputStream.write(buffer,0,len);}servletOutputStream.flush();file.close();servletOutputStream.close();}
}

Springboot项目集成Minio文件服务器(下)相关推荐

  1. springboot 集成MinIo 文件服务器

    springboot 集成 MinIo 文件服务器 1.添加依赖 dependency><groupId>io.minio</groupId><artifactId ...

  2. springboot项目集成log4j2打成jar包 ,引入外边的log4j2文件,运行日志无法打印

    springboot项目集成log4j2打成jar包 ,引入外边的log4j2文件,运行日志无法打印 问题描述 因为项目中已经有log4j2文件,所以打的jar中也有,在application.yml ...

  3. springboot项目集成dolphinscheduler调度器 实现datax数据同步任务

    Datax安装及基本使用请查看上一篇文章: 文章目录 Datax概述 1.概述 2.功能清单 3.==说明==:本项目只支持mysql及hbase之间的数据同步 代码模块 配置文件 pom.xml D ...

  4. springboot项目集成docker

    文章目录 一.docker常用命令 0.拉取镜像到本地仓库 1.查看所有镜像 2.创建一个新的容器并运行,返回的是容器的ID -- CONTAINER ID: 3.查看运行中的docker实例 4.查 ...

  5. springboot项目集成大数据第三方dolphinscheduler调度器

    文章目录 摘要 项目背景 功能要求 功能说明 1.1用例图 1.2业务流程分析 1.3业务ER图 1.4 管理任务流程图 1.5功能设计详细说明点 1.6页面原型 三.本人相关其他文章链接 摘要 ①d ...

  6. 一、springboot项目集成大众点评cat

    一. 什么是CAT 1.cat简介 Cat是基于Java开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务 • CAT作为服务端项目基础组件,提供了java, c/c++, node, p ...

  7. springboot的jsp应该放在哪_七、SpringBoot项目集成JSP以及项目不同启动方式及访问路径配置...

    1.创建JSP目录 在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面,如下图: 然后再改文件夹下面我们创建JSP文件: 大家在使用IDEA 的new菜单创建JSP ...

  8. springboot项目集成java接口文档生成工具knife4j

    knifie knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并 ...

  9. springBoot项目集成quartz开发定时任务案例及注意事项

    文章目录 quartz下载.安装 实战案例 常见问题及解决方案 quartz下载.安装 Quartz是完全由java开发的一个开源的任务日程管理系统,任务进度管理器就是一个在预先确定的时间到达时,负责 ...

最新文章

  1. gvim 二进制_vim/gvim学习
  2. 概览屏幕(最新动态屏幕、最近任务列表)
  3. UVA 413|LA 5388|POJ 1492|ZOJ 1338 Up and Down Sequences
  4. epic堡垒之夜显示服务器离线,堡垒之夜epic服务器进不去 | 手游网游页游攻略大全...
  5. 两张趣图助你理解 HTTP 状态码
  6. 求最大公约数----辗转相除法
  7. python 下载或者直接读取csv文件
  8. SQL Server存储过程的使用
  9. Node.js调试工具安装使用
  10. 0018-大数据售前的中年危机
  11. threadlocal使用_每日一题之 ThreadLocal
  12. word打开文档很久很慢_word打开慢,详细教您怎么解决word打开慢
  13. web将pdf转成图片以及图片转回pdf的方法
  14. 用MFC编程时在源文件里经常看到的AFX或afx是什么意思?
  15. 深入理解内存:原理简介
  16. python寻峰算法_python/scipy的寻峰算法
  17. 44.网络安全渗透测试—[穷举篇7]—[网站会员批量登录穷举]
  18. openssl 从内存直接加载CA证书
  19. Pycharm中,pyqt5.11.1的Qt assistant显示
  20. Matplotlib的一些常规操作

热门文章

  1. LOVE×EVOLUTION 汉化补丁
  2. 拉涨停板洗盘的分时图
  3. 七个基本量纲_常用量纲
  4. SOD领域RGBD算法-训练集设置
  5. 科幻创新基站 打造科幻产业发展新范式 ——中关村科幻产业创新中心正式启航
  6. “空气洗”再迎迭代,模仿者又有了新目标
  7. Python实现带GUI和连接数据库的图书管理系统
  8. 期货开户手续费加一分不赚钱
  9. 【射频】Smith圆图阻抗匹配变化规律
  10. Python High Performance 读书笔记1