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文件服务器的过程相关推荐

  1. springboot 集成MinIo 文件服务器

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

  2. SpringBoot集成MinIo实现资源库功能

    项目背景 要实现一个资源库的功能,实现图片.文件.视频等资源的上传和下载. 项目git地址,还没完全完成 https://github.com/zhumengting/resource-managem ...

  3. SpringBoot笔记:SpringBoot集成MinIO分布式文件系统

    文章目录 搭建MinIO集群 SpringBoot集成 添加依赖 添加配置 获取MinioClient MinioUtils完整工具类 测试代码 搭建MinIO集群 首先搭建MinIO的分布式集群,集 ...

  4. minio的安装和springboot集成minio

    文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...

  5. spring cloud 文件服务器,SpringBoot集成MinIO文件服务器

    docker-compose安装minio version: '3' services: minio: image: minio/minio:latest # 原镜像`minio/minio:late ...

  6. SpringBoot集成Minio搭建自己的分布式文件服务器(Minio集成篇)

    目录 1.导入依赖 2.创建spring boot工程,工程名为springboot-minio 3.配置minio配置文件 4.创建配置类MinioConfig 5.创建Minio工具类MinioU ...

  7. 一分钟解决Springboot响应报错:would dispatch back to the current handler URL [/index] agai

    报错简介 整合Springboot,在controller响应index.html页面的时候报错 报错代码log There was an unexpected error (type=Interna ...

  8. java上传图片报404_如何解决SpringBoot集成百度UEditor图片上传后直接访问404

    SpringBoot项目上传图片一般是上传至远程服务器存储,开发过程中可能会上传至当前项目的某个静态目录中,此时就会遇到这个问题,文件在上传之后直接访问并不能被访问到,必须重新加载项目. 首先分析一下 ...

  9. 高效解决 springBoot 集成 Redis 出现的 Unable to connect to Redis 问题

    报错如下: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; ne ...

  10. 解决SpringBoot集成分页插件pagehelper出现的循环依赖问题

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 SpringBoot2.6.7中集成分页插件com.github.pagehelpe ...

最新文章

  1. 预处理器预处理变量头文件保护条件编译
  2. mysql连接池_基于Swoole的通用连接池 - 数据库连接池(life)
  3. 批处理 批量s扫1433_申报资料 | 批量整理图谱(续)
  4. scss百分号操作符的一个使用例子
  5. 《操作系统真象还原》-阅读笔记(上)
  6. 台式电脑怎么找不到计算机在哪,台式机没有蓝牙怎么办
  7. Python中单引号,双引号,三个单引号,外双单引号内双引号,外双引号内单引号的区别...
  8. 谷歌chrome xp_什么是Google Chrome?
  9. java 数据内地地址_我国大陆居民×××Java验证
  10. python 二维码生成器_python二维码生成器
  11. java 调用odi_[转]ODI定时任务
  12. ปอเช็ตติโน่ เสียดายโอกาสของทีมในเกมฟัดหงส์
  13. 希尔顿集团旗下品牌希尔顿启缤精选酒店在河北廊坊正式开业
  14. 如何在一夜之间获得成功:我「从无到有」的 5 年 [英文版]
  15. c语言break语句作用范围,C语言程序设计中break语句分析
  16. 开放式基金公司网上直销支持卡种及申购费率
  17. 单片机 串口采用中断服务收发数据
  18. 十进制整数转化为二进制详解
  19. 如何在mac eclipse引入win版本eclipse的android项目
  20. 野兽北京读书记:关于精神力量的层次

热门文章

  1. 互联网公司的敏捷开发是怎么回事?这一份软件工程书单送给你!
  2. VirtualBox安装及使用说明和虚拟机安装XP系统图文教程
  3. Web数据挖掘小论文
  4. ubuntu 16.04 蓝牙鼠标 (可连接但是无法使用)
  5. 构建嵌入式系统软件开发环境-为开发板安装linux系统
  6. H-JTAG烧写程序的方法
  7. 华硕电脑的触摸板关闭
  8. 华硕FX50JK4200安装Win8.1后如何禁用触摸板
  9. hadoop 启动 报running beyond virtual memory错误的解决
  10. 2021最新Java面试真题解析!javasocket编程面试题