feat(storage): 集成MinIO对象存储支持

- 添加MinIO配置属性类MinioProperties
- 实现MinIO文件上传服务MinioService
- 在CommonController中增加MinIO上传逻辑分支
- 支持单文件和多文件的MinIO上传处理
- 保留原有本地文件上传作为备选方案- 添加MinIO Java SDK依赖到框架模块
- 移除重复的Spring Context依赖声明
This commit is contained in:
2025-09-28 18:23:21 +08:00
parent 8b3e41f60f
commit f3e072352b
7 changed files with 191 additions and 16 deletions

View File

@@ -20,6 +20,8 @@ import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.framework.config.MinioProperties;
import com.ruoyi.framework.service.MinioService;
/**
* 通用请求处理
@@ -35,6 +37,12 @@ public class CommonController
@Autowired
private ServerConfig serverConfig;
@Autowired(required = false)
private MinioService minioService;
@Autowired(required = false)
private MinioProperties minioProperties;
private static final String FILE_DELIMETER = ",";
/**
@@ -77,9 +85,22 @@ public class CommonController
{
try
{
// 上传文件路径
if (minioProperties != null && minioProperties.isEnabled())
{
MinioService.UploadResult result = minioService.upload(file);
String fileName = result.getObjectName();
String url = result.getUrl();
AjaxResult ajax = AjaxResult.success();
ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
}
// 本地上传路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
// 本地上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
@@ -103,21 +124,37 @@ public class CommonController
{
try
{
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
List<String> urls = new ArrayList<String>();
List<String> fileNames = new ArrayList<String>();
List<String> newFileNames = new ArrayList<String>();
List<String> originalFilenames = new ArrayList<String>();
for (MultipartFile file : files)
if (minioProperties != null && minioProperties.isEnabled())
{
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
urls.add(url);
fileNames.add(fileName);
newFileNames.add(FileUtils.getName(fileName));
originalFilenames.add(file.getOriginalFilename());
for (MultipartFile file : files)
{
MinioService.UploadResult result = minioService.upload(file);
String fileName = result.getObjectName();
String url = result.getUrl();
urls.add(url);
fileNames.add(fileName);
newFileNames.add(FileUtils.getName(fileName));
originalFilenames.add(file.getOriginalFilename());
}
}
else
{
// 本地上传路径
String filePath = RuoYiConfig.getUploadPath();
for (MultipartFile file : files)
{
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
urls.add(url);
fileNames.add(fileName);
newFileNames.add(FileUtils.getName(fileName));
originalFilenames.add(file.getOriginalFilename());
}
}
AjaxResult ajax = AjaxResult.success();
ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));

View File

@@ -127,6 +127,14 @@ springdoc:
paths-to-match: '/**'
packages-to-scan: com.ruoyi.web.controller.tool
# MinIO配置
minio:
enabled: true
endpoint: http://49.232.154.205:10900
access-key: 4EsLD9g9OM09DT0HaBKj
secret-key: 05SFC5fleqTnaLRYBrxHiphMFYbGX5nYicj0WCHA
bucket: rtsp
# 防止XSS攻击
xss:
# 过滤开关