ERP系统图片存储方案-MinIO
背景
文件存储在ERP系统中是不可缺少的功能,erp系统中的附件、商品档案的图片都需要进行存储,现在有很多云服务如阿里的oss可以满足,在这里我们分享基于MinIO自建图片存储方案,这里以 MagicErp为例对MinIO做一个完整的介绍
MinIO简介:
MinIO是基于 Golang 编写的开源免费的对象存储套件,是一款高性能高可用的文件系统服务,可以用来替换FastDFS
MinIO部署
创建文件存储目录
mkdir -p /opt/data/minIO/datadocker
启动命令
docker run -d -p 9000:9000 \
--name minio \
-v /opt/data/minIO/data:/data \
-e "MINIO_ACCESS_KEY=root" \
-e "MINIO_SECRET_KEY=root1234" \
minio/minio server /data
用户名:MINIO_ACCESS_KEY (用户名最低3位)
密码: MINIO_SECRET_KEY (密码最低8位)
详细见 : min.io官网
代码实现
MagicErp提供了多种文件存储方案,如阿里云OSS和MinIO,可一键切换其中一种方案,同时也方便二次开发
文件上传接口类
/**
* 存储方案参数接口
*/
public interface Uploader {
/**
* 配置各个存储方案的参数
* @return 参数列表
*/
List<ConfigItem> definitionConfigItem();
/**
* 上传文件
* @param input 上传对象
* @param scene 业务场景
* @param config 配置信息
* @return
*/
FileVO upload(FileDTO input, String scene, Map config);
/**
* 删除文件
* @param filePath 文件地址
* @param config 配置信息
*/
void deleteFile(String filePath, Map config);
/**
* 获取插件ID
* @return 插件beanId
*/
String getPluginId();
/**
* 生成缩略图路径
* @param url 原图片全路径
* @param width 需要生成图片尺寸的宽
* @param height 需要生成图片尺寸的高
* @return 生成的缩略图路径
*/
String getThumbnailUrl(String url, Integer width, Integer height);
/**
* 存储方案是否开启
* @return 0 不开启 1 开启
*/
Integer getIsOpen();
/**
* 获取插件名称
* @return 插件名称
*/
String getPluginName();
}
minIO的插件类
@Component
public class MinIOPlugin implements Uploader {
/**
* 获取配置参数
*/
@Override
public List<ConfigItem> definitionConfigItem() {
List