SpringBoot中整合Minio文件存储的安装部署过程

网友投稿 910 2022-10-14

SpringBoot中整合Minio文件存储的安装部署过程

SpringBoot中整合Minio文件存储的安装部署过程

目录背景Minio安装部署配置pom文件配置yml文件Minio工具类初始化client上传文件-文件删除文件

背景

公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求附件存储与应用部署环境不能是同一台服务器,也不能使用云存储,经过技术选型后决定框架整合minio,将minio部署在另一台服务器开通外网端口即可解决问题

Minio安装部署

-minio安装部署包,创建对应配置文件,这里提供一个整合后的压缩包

-:http://xiazai.jb51-/202204/yuanma/minio_jb51.rar

创建minioData文件夹作为文件存储路径,解压安装包根据放置路径修改对应配置文件文件

minio-service.xml和run.bat

minio

MinIO Service

MinIO is a High Performance Object Storage

D:\minio\logs

10240

8

D:\minio\run.bat

set MINIO_ACCESS_KEY=admin

set MINIO_SECRET_KEY=abcd@1234

minio.exe server -address :9999 D:\minioData

解压部署包后cmd进入对应解压路径,输入命令minio.exe server D:\minioData 初始化后关闭cmd命令

使用服务安装工具安装服务,选择minio-service.exe

windows服务安装工具-:http://xiazai.jb51-/202204/yuanma/windowsfuwu_jb51.rar

启动服务后访问 http://127.0.0.1:9999/

用户名:admin 密码:abcd@1234 (端口及账户密码都是在run.bat文件中配置的)

进入系统创建bucket用于存储文件(类似于阿里云)

配置pom文件

io.minio

minio

7.1.0

配置yml文件

这里分别配置上传/-是正式项目可能配置外网端口后,服务器中不能访问对应的外网端口,上传走内网,-走外网

#minio配置

# 上传地址

minio_uploadurl: http://192.168.1.42:9999/

# -

minio_downloadurl: http://192.168.1.42:9999/

# 账户

minio_accesskey: admin

# 密码

minio_secrectkey: abcd@1234

# 存储文件夹

minio_bucknetname: xxx

Minio工具类

初始化client

public MinioClient InitMinio() {

MinioClient minioClient = MinioClient.builder().

endpoint(frameConfig.getMinio_uploadurl()). credentials(frameConfig.getMinio_accesskey(),frameConfighttp://.getMinio_secrectkey()).build();

try{

boolean isExist = minioClient.bucketExists(frameConfig.getMinio_bucknetname());

if (!isExist) {

minioClient.makeBucket(frameConfig.getMinio_bucknetname());

}

}catch (Exception e){

e.printStackTrace();

}

return minioClient;

}

上传文件

getkey方法只是指定对应的自定义存储路径

指定content-type是为了浏览器能打开附件时,图片和pdf等文件能够在线浏览

不指定默认都是stream,打开文件统一为-

public boolean uploadMinioFile(InputStream stream, AttachmentDO attachmentDO,String contentType){

boolean result = true;

try{

MinioClient minioClient = InitMinio();

String bucketName =frameConfig.getMinio_bucknetname();

PutObjectOptions option = new PutObjectOptions(stream.available(), -1);http://

option.setContentType(contentType);

minioClient.putObject(bucketName,getKey(attachmentDO),stream,option);

}catch (Exception e){

logger.error("Minio上传文件失败:" + e.getMessage());

result = false;

}

return result;

}

-文件

需要注意的是,生成的文件-是和MinioClient中指定的服务器地址绑定的,使用nginx代理后是无效的

public String readMinioCommonFile(AttachmentDO attachmentDO){

String fileurl = "";

try{

MinioClient minioClient = InitMinio();

String bucketName =frameConfig.getMinio_bucknetname();

return minioClient.presignedGetObject(bucketName, getKey(attachmentDO));

}catch (Exception e){

logger.error("Minio读取文件失败:" + e.getMessage());

}

return fileurl;

}

删除文件

public boolean deleteMinioFile(AttachmentDO attachmentDO){

boolean result = true;

try{

MinioClient minioClient = InitMinio();

String bucketName =frameConfig.getMinio_bucknetname();

minioClient.removeObject(bucketName,getKey(attachmentDO));

}catch (Exception e){

logger.error("Minio删除文件失败:" + e.getMessage());

result = false;

}

return result;

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:海量分布式存储系统Doris
下一篇:为以了解量身定做的小程序,方便医生日常知识的获取。
相关文章

 发表评论

暂时没有评论,来抢沙发吧~