minio 文件服务器,5分钟解决SpringBoot集成minio文件服务器的过程
SpringBoot集成Minio
现在流行的文件服务器基本上有minio,fastdfs,那么今天就说一下minio的安装及集成
安装部署minio
// 首先进入到你的目录
cd /ext/minio
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
//给予可执行
chmod +x minio
//启动
minio server /ext/data
//或
minio server --config-dir=/ext/minio --address=:9000 //ext/data
//安装基本上就这样,启动起来访问一下 http://xxx.xx.xx.xx:9000/minio。一般默认安装的默认用户名密码为:minioadmin/minioadmin
开始和SpringBoot集成
/**
* 文件管理对象 minio_files
* 这里是获取配置文件中的实体信息
* @author xxc
* @date 2020-06-20
*/
public class MinioFiles extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
@Excel(name = "用户id")
private Long userId;
/** 文件路径 */
@Excel(name = "文件路径")
private String backetName;
/** 文件名称 */
@Excel(name = "文件名称")
private String fileName;
/** 文件大小 */
@Excel(name = "文件大小")
private Long fileSize;
/** 文件后缀 */
@Excel(name = "文件后缀")
private String fileSuffix;
/** 删除标志(0代表存在 2代表删除) */
private String delFlag;
/** 文件类型 */
@Excel(name = "文件类型")
private String fileType;
@Excel(name = "文件原名")
private String fileOriginalName;
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFileOriginalName() {
return fileOriginalName;
}
public void setFileOriginalName(String fileOriginalName) {
this.fileOriginalName = fileOriginalName;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setBacketName(String backetName)
{
this.backetName = backetName;
}
public String getBacketName()
{
return backetName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getFileName()
{
return fileName;
}
public void setFileSize(Long fileSize)
{
this.fileSize = fileSize;
}
public Long getFileSize()
{
return fileSize;
}
public void setFileSuffix(String fileSuffix)
{
this.fileSuffix = fileSuffix;
}
public String getFileSuffix()
{
return fileSuffix;
}
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
}
public String getDelFlag()
{
return delFlag;
}
public void setFileType(String fileType)
{
this.fileType = fileType;
}
public String getFileType()
{
return fileType;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId()).append("userId", getUserId())
.append("createBy", getCreateBy())
.append("backetName", getBacketName())
.append("fileName", getFileName())
.append("fileSize", getFileSize())
.append("fileSuffix", getFileSuffix())
.append("createTime", getCreateTime())
.append("delFlag", getDelFlag())
.append("fileType", getFileType()).append("fileOriginalName", getFileOriginalName())
.toString();
}
}
import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import javax.annotation.PostConstruct;
import javax.servlet.ServletOutputStream;
import java.io.InputStream;
@Component
@Configuration
public class MinIoUtils {
private MinioConfig minIo;
public MinIoUtils(MinioConfig minIo) {
this.minIo = minIo;
}
private MinioClient instance;
@PostConstruct
public void init() {
try {
instance = new MinioClient(minIo.getUrl(),minIo.getAccessKey(),minIo.getSecretKey());
} catch (InvalidPortException e) {
e.printStackTrace();
} catch (InvalidEndpointException e) {
e.printStackTrace();
}
}
/**
* 判断 bucket是否存在
* @param bucketName
* @return
*/
public boolean bucketExists(String bucketName){
try {
return instance.bucketExists(bucketName);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 创建 bucket
* @param bucketName
*/
public void makeBucket(String bucketName){
try {
boolean isExist = instance.bucketExists(bucketName);
if(!isExist) {
instance.makeBucket(bucketName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 文件上传
* @param bucketName
* @param objectName
* @param filename
*/
public void putObject(String bucketName, String objectName, String filename){
try {
instance.putObject(bucketName,objectName,filename,null);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 文件上传
* @param bucketName
* @param multipartFile
*/
public void putObject(String bucketName, MultipartFile multipartFile,String filename){
try {
// PutObjectOptions,上传配置(文件大小,内存中文件分片大小)
PutObjectOptions putObjectOptions = new PutObjectOptions(multipartFile.getSize(), PutObjectOptions.MIN_MULTIPART_SIZE);
// 文件的ContentType
putObjectOptions.setContentType(multipartFile.getContentType());
instance.putObject(bucketName,filename,multipartFile.getInputStream(),putObjectOptions);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除文件
* @param objectName
*/
public boolean removeObject(String objectName){
boolean flag=true;
try {
instance.removeObject(minIo.getBucketName(),objectName);
} catch (Exception e) {
flag=false;
}
return flag;
}
public void downloadFile(String fileName,String originalName, HttpServletResponse response){
try {
InputStream file = instance.getObject(minIo.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();
} catch (ErrorResponseException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//如果想使用直接注入使用既可以了。
@Service
public class MinioFilesServiceImpl implements IMinioFilesService {
@Autowired
private MinioFilesMapper minioFilesMapper;
@Autowired
private MinIoUtils minIoUtils;
、、、、、、
}
minio 文件服务器,5分钟解决SpringBoot集成minio文件服务器的过程相关推荐
- springboot 集成MinIo 文件服务器
springboot 集成 MinIo 文件服务器 1.添加依赖 dependency><groupId>io.minio</groupId><artifactId ...
- SpringBoot集成MinIo实现资源库功能
项目背景 要实现一个资源库的功能,实现图片.文件.视频等资源的上传和下载. 项目git地址,还没完全完成 https://github.com/zhumengting/resource-managem ...
- SpringBoot笔记:SpringBoot集成MinIO分布式文件系统
文章目录 搭建MinIO集群 SpringBoot集成 添加依赖 添加配置 获取MinioClient MinioUtils完整工具类 测试代码 搭建MinIO集群 首先搭建MinIO的分布式集群,集 ...
- minio的安装和springboot集成minio
文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...
- spring cloud 文件服务器,SpringBoot集成MinIO文件服务器
docker-compose安装minio version: '3' services: minio: image: minio/minio:latest # 原镜像`minio/minio:late ...
- SpringBoot集成Minio搭建自己的分布式文件服务器(Minio集成篇)
目录 1.导入依赖 2.创建spring boot工程,工程名为springboot-minio 3.配置minio配置文件 4.创建配置类MinioConfig 5.创建Minio工具类MinioU ...
- 一分钟解决Springboot响应报错:would dispatch back to the current handler URL [/index] agai
报错简介 整合Springboot,在controller响应index.html页面的时候报错 报错代码log There was an unexpected error (type=Interna ...
- java上传图片报404_如何解决SpringBoot集成百度UEditor图片上传后直接访问404
SpringBoot项目上传图片一般是上传至远程服务器存储,开发过程中可能会上传至当前项目的某个静态目录中,此时就会遇到这个问题,文件在上传之后直接访问并不能被访问到,必须重新加载项目. 首先分析一下 ...
- 高效解决 springBoot 集成 Redis 出现的 Unable to connect to Redis 问题
报错如下: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; ne ...
- 解决SpringBoot集成分页插件pagehelper出现的循环依赖问题
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 SpringBoot2.6.7中集成分页插件com.github.pagehelpe ...
最新文章
- 预处理器预处理变量头文件保护条件编译
- mysql连接池_基于Swoole的通用连接池 - 数据库连接池(life)
- 批处理 批量s扫1433_申报资料 | 批量整理图谱(续)
- scss百分号操作符的一个使用例子
- 《操作系统真象还原》-阅读笔记(上)
- 台式电脑怎么找不到计算机在哪,台式机没有蓝牙怎么办
- Python中单引号,双引号,三个单引号,外双单引号内双引号,外双引号内单引号的区别...
- 谷歌chrome xp_什么是Google Chrome?
- java 数据内地地址_我国大陆居民×××Java验证
- python 二维码生成器_python二维码生成器
- java 调用odi_[转]ODI定时任务
- ปอเช็ตติโน่ เสียดายโอกาสของทีมในเกมฟัดหงส์
- 希尔顿集团旗下品牌希尔顿启缤精选酒店在河北廊坊正式开业
- 如何在一夜之间获得成功:我「从无到有」的 5 年 [英文版]
- c语言break语句作用范围,C语言程序设计中break语句分析
- 开放式基金公司网上直销支持卡种及申购费率
- 单片机 串口采用中断服务收发数据
- 十进制整数转化为二进制详解
- 如何在mac eclipse引入win版本eclipse的android项目
- 野兽北京读书记:关于精神力量的层次