From 2c68646fc9b073dc1212f03a0b5a848d324ce69e Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Tue, 14 Oct 2025 20:35:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=96=87=E4=BB=B6bug?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/oss/utils/FileStorageUtil.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java index 934218c64..d999cbf58 100644 --- a/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java @@ -2,6 +2,7 @@ package com.njcn.oss.utils; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.IdUtil; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.huawei.obs.util.OBSUtil; @@ -88,16 +89,23 @@ public class FileStorageUtil { } }else { try { - // 确保目录存在 - Path uploadPath = Paths.get(generalInfo.getLocalStorePath()); + // 构建完整目录:基准目录 + dir子目录 + Path basePath = Paths.get(generalInfo.getLocalStorePath()); + Path uploadPath = basePath.resolve(dir); // 将dir作为子目录添加 + + // 确保完整目录存在(包括dir子目录) if (!Files.exists(uploadPath)) { Files.createDirectories(uploadPath); } - // 生成本地文件名(可以添加时间戳或UUID防止重名) + // 生成本地文件名(处理扩展名,防止异常) String originalFilename = multipartFile.getOriginalFilename(); - String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")); - String newFilename = UUID.randomUUID().toString() + fileExtension; + String fileExtension = ""; + int extIndex = originalFilename.lastIndexOf("."); + if (extIndex > 0 && extIndex < originalFilename.length() - 1) { + fileExtension = originalFilename.substring(extIndex); + } + String newFilename = IdUtil.simpleUUID().toUpperCase() + fileExtension; // 构建完整路径 Path filePathPath = uploadPath.resolve(newFilename); @@ -105,7 +113,7 @@ public class FileStorageUtil { // 保存文件 multipartFile.transferTo(filePathPath.toFile()); - // 返回相对路径或完整路径,根据需求调整 + // 返回相对路径或完整路径 filePath = dir + File.separator + newFilename; } catch (IOException e) { throw new BusinessException("本地文件上传失败: " + e.getMessage());