Springboot项目集成Minio文件服务器(下)
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文件服务器(下)相关推荐
- springboot 集成MinIo 文件服务器
springboot 集成 MinIo 文件服务器 1.添加依赖 dependency><groupId>io.minio</groupId><artifactId ...
- springboot项目集成log4j2打成jar包 ,引入外边的log4j2文件,运行日志无法打印
springboot项目集成log4j2打成jar包 ,引入外边的log4j2文件,运行日志无法打印 问题描述 因为项目中已经有log4j2文件,所以打的jar中也有,在application.yml ...
- springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
Datax安装及基本使用请查看上一篇文章: 文章目录 Datax概述 1.概述 2.功能清单 3.==说明==:本项目只支持mysql及hbase之间的数据同步 代码模块 配置文件 pom.xml D ...
- springboot项目集成docker
文章目录 一.docker常用命令 0.拉取镜像到本地仓库 1.查看所有镜像 2.创建一个新的容器并运行,返回的是容器的ID -- CONTAINER ID: 3.查看运行中的docker实例 4.查 ...
- springboot项目集成大数据第三方dolphinscheduler调度器
文章目录 摘要 项目背景 功能要求 功能说明 1.1用例图 1.2业务流程分析 1.3业务ER图 1.4 管理任务流程图 1.5功能设计详细说明点 1.6页面原型 三.本人相关其他文章链接 摘要 ①d ...
- 一、springboot项目集成大众点评cat
一. 什么是CAT 1.cat简介 Cat是基于Java开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务 • CAT作为服务端项目基础组件,提供了java, c/c++, node, p ...
- springboot的jsp应该放在哪_七、SpringBoot项目集成JSP以及项目不同启动方式及访问路径配置...
1.创建JSP目录 在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面,如下图: 然后再改文件夹下面我们创建JSP文件: 大家在使用IDEA 的new菜单创建JSP ...
- springboot项目集成java接口文档生成工具knife4j
knifie knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并 ...
- springBoot项目集成quartz开发定时任务案例及注意事项
文章目录 quartz下载.安装 实战案例 常见问题及解决方案 quartz下载.安装 Quartz是完全由java开发的一个开源的任务日程管理系统,任务进度管理器就是一个在预先确定的时间到达时,负责 ...
最新文章
- gvim 二进制_vim/gvim学习
- 概览屏幕(最新动态屏幕、最近任务列表)
- UVA 413|LA 5388|POJ 1492|ZOJ 1338 Up and Down Sequences
- epic堡垒之夜显示服务器离线,堡垒之夜epic服务器进不去 | 手游网游页游攻略大全...
- 两张趣图助你理解 HTTP 状态码
- 求最大公约数----辗转相除法
- python 下载或者直接读取csv文件
- SQL Server存储过程的使用
- Node.js调试工具安装使用
- 0018-大数据售前的中年危机
- threadlocal使用_每日一题之 ThreadLocal
- word打开文档很久很慢_word打开慢,详细教您怎么解决word打开慢
- web将pdf转成图片以及图片转回pdf的方法
- 用MFC编程时在源文件里经常看到的AFX或afx是什么意思?
- 深入理解内存:原理简介
- python寻峰算法_python/scipy的寻峰算法
- 44.网络安全渗透测试—[穷举篇7]—[网站会员批量登录穷举]
- openssl 从内存直接加载CA证书
- Pycharm中,pyqt5.11.1的Qt assistant显示
- Matplotlib的一些常规操作