- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求附件存储与应用部署环境不能是同一台服务器,也不能使用云存储,经过技术选型后决定框架整合minio,将minio部署在另一台服务器开通外网端口即可解决问题
下载minio安装部署包,创建对应配置文件,这里提供一个整合后的压缩包
下载地址:https://download.csdn.net/download/u013407099/45602196
创建minioData文件夹作为文件存储路径,解压安装包根据放置路径修改对应配置文件文件
minio-service.xml和run.bat
<service>
<id>minio</id>
<name>MinIO Service</name>
<description>MinIO is a High Performance Object Storage</description>
<logpath>D:\minio\logs</logpath>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
<executable>D:\minio\run.bat</executable>
</service>
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服务安装工具下载地址:https://download.csdn.net/download/u013407099/45603714
启动服务后访问 http://127.0.0.1:9999/
用户名:admin 密码:abcd@1234 (端口及账户密码都是在run.bat文件中配置的)
进入系统创建bucket用于存储文件(类似于阿里云)
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>
这里分别配置上传/下载地址是正式项目可能配置外网端口后,服务器中不能访问对应的外网端口,上传走内网,下载走外网
#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
public MinioClient InitMinio() {
MinioClient minioClient = MinioClient.builder().
endpoint(frameConfig.getMinio_uploadurl()). credentials(frameConfig.getMinio_accesskey(),frameConfig.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);
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;
}
我正在使用 aws-sdk-go ( https://github.com/aws/aws-sdk-go ) 连接 AWS S3。我还想通过相同的代码支持 MinIO ( http://minio.i
是否可以完全禁用本地和 CI 使用的 MinIO 身份验证?一些背景知识:我们正在从 LocalStack 迁移到 MinIO,并且大量代码依赖于对 S3 的未经身份验证的访问,因此完全禁用身份验证是
我已将 MinIO 存储桶的访问权限设置为“下载”,以便任何人都可以读取(但不能写入)文件,但这启用了显示整个存储桶内容的“索引页面”。例如,考虑包含文件 example.png 的存储桶 store
我们有一个 minio 服务器。到目前为止,匿名用户无法做任何事情。 现在我们希望允许他们在知道路径时下载对象。 例如https://minio.example.com/minio/download/
我已经从我的 android 客户端在 minio 服务器( https://play.minio.io:9000 )中上传了一些图像和视频。现在我已经能够从该文件夹下载上传的内容。我可以看到内容不是
我正在使用其 docker 镜像运行 Minio 服务器。 docker run -p 9000:9000 --name minio1 \ -e "MINIO_ACCESS_KEY=user" \
使用Python客户端,如何递归上传本地目录下的所有文件到Minio,同时保留目录结构? 最佳答案 此递归函数上传所有文件,前提是 Minio 客户端已预先初始化: import glob def u
我正在通过以下命令使用 minio 5.0.1: pip install minio 但是我还是报错 Traceback (most recent call last): File "minio.
使用Python客户端,如何递归上传本地目录下的所有文件到Minio,同时保留目录结构? 最佳答案 此递归函数上传所有文件,前提是 Minio 客户端已预先初始化: import glob def u
我正在通过以下命令使用 minio 5.0.1: pip install minio 但是我还是报错 Traceback (most recent call last): File "minio.
我在安装 Minio 时遇到问题。 Minio 租户卡在“等待 MinIO TLS 证书”状态。租户是由 helm chart 还是由附加的 yaml 创建的并不重要。即使我从 Minio Web 控
我已经在 minio.io 上搜索了几个小时,但 id 没有提供任何关于聚类的好信息,它是否有环和实例是否连接?或 mini 仅用于单台隔离机。为了运行集群,我们必须运行它的许多独立实例,我们的应用程
我在 docker-compose 的容器中运行一个 minio-server。我正在尝试使用 minio-client(python SDK)从主机(Ubuntu)(而不是容器)将文件上传到容器中的
简单的问题: 我想知道如何使用 minio 作为本地 S3 代理来保存 Airflow 发送的数据,而不是使用 S3 或 GCS。我该怎么做呢?我真的可以使用 FileToGoogleCloudSto
上下文: 从 docker hub 获得 minio(与 s3 兼容的存储) 在 Unbuntu (VirtualBox) 中运行 minio docker 镜像 主机操作系统:Mac 或 Win10
docker安装 1、拉取镜像 docker pull minio/minio 2、启动镜像 docker run -p 9000:9000 -p 9001:9001 --name minio -
Mino 对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化
我正在使用minio来管理文件 const getMinioClient = () => { const minioClient = new Minio.Client({ endPoint
我在 Minio 中存储了大量对象。我需要将它们从一个桶移到另一个桶。由于对象的数量很大(以及对象本身的大小),我不想将它们上传到内存中。 到目前为止,我发现的唯一方法是将对象复制到目标存储桶并将它们
我想将元数据添加到 Minio 对象,同时使用 python 将文件作为对象添加到 Minio 对象存储。我能够找到存储在 Minio 上的对象的访问元数据。但是没有在将文件添加到 Minio 存储时
我是一名优秀的程序员,十分优秀!