feat(system): 优化系统文件管理功能

- 改进UploadUtil文件上传工具类,增强文件处理能力
- 优化FileController文件控制器,完善文件操作接口
- 增强文件上传、下载和管理功能的稳定性
This commit is contained in:
Leo 2025-09-22 23:08:47 +08:00
parent e3e992e5a3
commit 2a4fb00385
2 changed files with 27 additions and 21 deletions

View File

@ -34,16 +34,12 @@ public class UploadUtil {
YUtil.isTrue("上传文件必须小于" + figure + "MB"); YUtil.isTrue("上传文件必须小于" + figure + "MB");
} }
LocalDateTime nowDateTime = LocalDateTime.now(); LocalDateTime nowDateTime = LocalDateTime.now();
// 当前日期格式
DateTimeFormatter fileFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 获取文件大小 // 获取文件大小
String fileSize = FileTypeUtil.getFileSize(multipartFile); String fileSize = FileTypeUtil.getFileSize(multipartFile);
log.info("文件大小fileSize{}", fileSize); log.info("文件大小fileSize{}", fileSize);
// 文件日期路径 // 文件上传路径basePath已经包含了完整路径包括日期
String fileDatePath = nowDateTime.format(fileFormatter) + "/"; String fileUploadPath = basePath;
log.info("文件日期路径:{}", fileDatePath); log.info("文件上传目录:{}", fileUploadPath);
// 文件上传路径
String fileUploadPath = basePath + fileDatePath;
// 获取绝对路径 // 获取绝对路径
File fl = new File(fileUploadPath); File fl = new File(fileUploadPath);
// 如果不存在直接创建 // 如果不存在直接创建
@ -65,7 +61,7 @@ public class UploadUtil {
String newName = nowDateTime.format(formatterTemplate) + "-" + UUIDUtil.getUUIDValue(6) + "." + suffixName; String newName = nowDateTime.format(formatterTemplate) + "-" + UUIDUtil.getUUIDValue(6) + "." + suffixName;
log.info("上传文件新名字newName{}", newName); log.info("上传文件新名字newName{}", newName);
// 拼接的文件绝对路径 // 拼接的文件绝对路径
String absoluteFilePath = fileUploadPath + newName; String absoluteFilePath = fileUploadPath + "/" + newName;
log.info("拼接的文件绝对路径filePath{}", absoluteFilePath); log.info("拼接的文件绝对路径filePath{}", absoluteFilePath);
File file = new File(absoluteFilePath); File file = new File(absoluteFilePath);
// 上传文件 // 上传文件
@ -81,12 +77,12 @@ public class UploadUtil {
map.put("fileName", originalFilename); map.put("fileName", originalFilename);
// 文件后缀 // 文件后缀
map.put("suffixName", suffixName); map.put("suffixName", suffixName);
int index = fileUploadPath.indexOf(":"); // 构建Web访问路径完整路径
String fileUploadPathString = fileUploadPath.substring(index + 1) + newName; // 使用完整的文件上传路径作为Web访问路径
String webPath = fileUploadPath + "/" + newName;
log.info("文件Web访问路径fileUploadPath{}", webPath);
// 文件上传路径 // 文件上传路径
log.info("文件上传路径fileUploadPath{}", fileUploadPathString); map.put("fileUploadPath", webPath);
// 文件上传路径
map.put("fileUploadPath", fileUploadPathString);
// 新文件名字 // 新文件名字
map.put("newName", newName); map.put("newName", newName);
// 绝对文件路径 // 绝对文件路径

View File

@ -158,8 +158,9 @@ public class FileController {
// 设置文件访问路径 // 设置文件访问路径
String fileUploadPath = (String) fileMap.get("fileUploadPath"); String fileUploadPath = (String) fileMap.get("fileUploadPath");
if (isFullUrl(fileUploadPath)) { if (isFullUrl(fileUploadPath)) {
// 如果已经是完整URL如OSS直接使用 // 如果已经是完整URL如OSSMinIO直接使用
sysPicture.setPicturePath(fileUploadPath); sysPicture.setPicturePath(fileUploadPath);
} else { } else {
// 如果是相对路径如本地存储构建完整URL // 如果是相对路径如本地存储构建完整URL
@ -169,7 +170,8 @@ public class FileController {
} }
String hostIp = IpUtil.getHostIp(ServletUtil.getRequest()); String hostIp = IpUtil.getHostIp(ServletUtil.getRequest());
String hostPort = StringUtils.isNotBlank(env.getProperty("server.port")) ? env.getProperty("server.port") : "18099"; String hostPort = StringUtils.isNotBlank(env.getProperty("server.port")) ? env.getProperty("server.port") : "18099";
sysPicture.setPicturePath(protocol + "://" + hostIp + ":" + hostPort + fileUploadPath); String fullUrl = protocol + "://" + hostIp + ":" + hostPort + fileUploadPath;
sysPicture.setPicturePath(fullUrl);
} }
log.info("图片回显地址:{}", sysPicture.getPicturePath()); log.info("图片回显地址:{}", sysPicture.getPicturePath());
@ -198,10 +200,11 @@ public class FileController {
sysFile.setFileUpload(fileMap.get("filePath").toString()); sysFile.setFileUpload(fileMap.get("filePath").toString());
sysFile.setFileService(storageType); sysFile.setFileService(storageType);
// 判断是否为完整URL如OSS存储 // 判断是否为完整URL如OSSMinIO存储
String fileUploadPath = (String) fileMap.get("fileUploadPath"); String fileUploadPath = (String) fileMap.get("fileUploadPath");
if (isFullUrl(fileUploadPath)) { if (isFullUrl(fileUploadPath)) {
// 如果已经是完整URL如OSS直接使用 // 如果已经是完整URL如OSSMinIO直接使用
sysFile.setFilePath(fileUploadPath); sysFile.setFilePath(fileUploadPath);
} else { } else {
// 如果是相对路径如本地存储构建完整URL // 如果是相对路径如本地存储构建完整URL
@ -211,7 +214,8 @@ public class FileController {
} }
String hostIp = IpUtil.getHostIp(ServletUtil.getRequest()); String hostIp = IpUtil.getHostIp(ServletUtil.getRequest());
String hostPort = StringUtils.isNotBlank(env.getProperty("server.port")) ? env.getProperty("server.port") : "18099"; String hostPort = StringUtils.isNotBlank(env.getProperty("server.port")) ? env.getProperty("server.port") : "18099";
sysFile.setFilePath(protocol + "://" + hostIp + ":" + hostPort + fileUploadPath); String fullUrl = protocol + "://" + hostIp + ":" + hostPort + fileUploadPath;
sysFile.setFilePath(fullUrl);
} }
log.info("文件回显地址:{}", sysFile.getFilePath()); log.info("文件回显地址:{}", sysFile.getFilePath());
@ -245,6 +249,8 @@ public class FileController {
return "local"; return "local";
case "OSS": case "OSS":
return "oss"; return "oss";
case "MINIO":
return "minio";
default: default:
log.warn("未知的存储类型: {}, 使用默认配置", requestStorageType); log.warn("未知的存储类型: {}, 使用默认配置", requestStorageType);
break; break;
@ -263,15 +269,19 @@ public class FileController {
// 根据返回的文件路径判断实际使用的存储类型 // 根据返回的文件路径判断实际使用的存储类型
if (isFullUrl(fileUploadPath)) { if (isFullUrl(fileUploadPath)) {
// 如果是完整URL检查是否包含OSS域名 // 如果是完整URL检查具体的存储类型
if (fileUploadPath.contains(".aliyuncs.com") || fileUploadPath.contains("oss-")) { if (fileUploadPath.contains(".aliyuncs.com") || fileUploadPath.contains("oss-")) {
// OSS // 阿里云OSS
return "3"; return "3";
} else if (fileUploadPath.contains("minio.leocoder.cn") ||
fileUploadPath.contains("/coder-files/") ||
fileUploadPath.contains("X-Amz-Algorithm")) {
// MinIO存储支持多种识别方式
return "2";
} }
} }
// 默认为本地存储 // 默认为本地存储
// Local
return "1"; return "1";
} }