diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java index 4007aa6..639c689 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java @@ -42,19 +42,19 @@ public class FileServiceImpl implements FileService { */ static boolean PATH_PREFIX_DATE_ENABLE = true; /** - * 上传文件的后缀,是否包含时间戳 + * 上传文件的后缀,是否启用 * - * 目的:保证文件的唯一性,避免覆盖 + * 算法:当前时间戳(毫秒)+ 5 位随机数;目的是保证文件的唯一性,避免覆盖 * 定制:可按需调整成 UUID、或者其他方式 */ static boolean PATH_SUFFIX_TIMESTAMP_ENABLE = false; /** - * 时间戳是否作为上级目录 + * 后缀是否作为上级目录 * - * true:{@code yyyyMMdd/timestamp/原文件名.ext};保留原文件名 - * false:{@code yyyyMMdd/原文件名_timestamp.ext};时间戳拼到文件名 + * true:{@code yyyyMMdd/<后缀>/原文件名.ext};保留原文件名 + * false:{@code yyyyMMdd/原文件名_<后缀>.ext};后缀拼到文件名 */ - static boolean PATH_TIMESTAMP_AS_DIRECTORY = true; + static boolean PATH_SUFFIX_AS_DIRECTORY = true; @Resource private FileConfigService fileConfigService; @@ -115,7 +115,7 @@ public class FileServiceImpl implements FileService { // 2.1 先拼接 suffix 后缀 if (StrUtil.isNotEmpty(suffix)) { - if (PATH_TIMESTAMP_AS_DIRECTORY) { + if (PATH_SUFFIX_AS_DIRECTORY) { name = suffix + StrUtil.SLASH + name; } else { String ext = FileUtil.extName(name); diff --git a/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImplTest.java b/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImplTest.java index 9656def..8cd8fe7 100644 --- a/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImplTest.java +++ b/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImplTest.java @@ -42,7 +42,7 @@ public class FileServiceImplTest extends BaseDbUnitTest { public void setUp() { FileServiceImpl.PATH_PREFIX_DATE_ENABLE = true; FileServiceImpl.PATH_SUFFIX_TIMESTAMP_ENABLE = true; - FileServiceImpl.PATH_TIMESTAMP_AS_DIRECTORY = true; + FileServiceImpl.PATH_SUFFIX_AS_DIRECTORY = true; } @Test @@ -201,7 +201,7 @@ public class FileServiceImplTest extends BaseDbUnitTest { String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:avatar/yyyyMMdd/timestamp/test.jpg + // 格式为:avatar/yyyyMMdd/{时间戳+随机数}/test.jpg assertTrue(path.startsWith(directory + "/")); // 包含日期格式:8 位数字,如 20240517 assertTrue(path.matches(directory + "/\\d{8}/\\d+/test\\.jpg")); @@ -237,7 +237,7 @@ public class FileServiceImplTest extends BaseDbUnitTest { String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:avatar/timestamp/test.jpg + // 格式为:avatar/{时间戳+随机数}/test.jpg assertTrue(path.startsWith(directory + "/")); assertTrue(path.matches(directory + "/\\d+/test\\.jpg")); } @@ -270,7 +270,7 @@ public class FileServiceImplTest extends BaseDbUnitTest { String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:avatar/yyyyMMdd/timestamp/test + // 格式为:avatar/yyyyMMdd/{时间戳+随机数}/test assertTrue(path.startsWith(directory + "/")); assertTrue(path.matches(directory + "/\\d{8}/\\d+/test")); } @@ -287,58 +287,58 @@ public class FileServiceImplTest extends BaseDbUnitTest { String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:yyyyMMdd/timestamp/test.jpg + // 格式为:yyyyMMdd/{时间戳+随机数}/test.jpg assertTrue(path.matches("\\d{8}/\\d+/test\\.jpg")); } @Test - public void testGenerateUploadPath_TimestampAsName_AllEnabled() { + public void testGenerateUploadPath_SuffixAsName_AllEnabled() { // 准备参数 String name = "test.jpg"; String directory = "avatar"; FileServiceImpl.PATH_PREFIX_DATE_ENABLE = true; FileServiceImpl.PATH_SUFFIX_TIMESTAMP_ENABLE = true; - FileServiceImpl.PATH_TIMESTAMP_AS_DIRECTORY = false; + FileServiceImpl.PATH_SUFFIX_AS_DIRECTORY = false; // 调用 String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:avatar/yyyyMMdd/test_timestamp.jpg + // 格式为:avatar/yyyyMMdd/test_{时间戳+随机数}.jpg assertTrue(path.matches(directory + "/\\d{8}/test_\\d+\\.jpg")); } @Test - public void testGenerateUploadPath_TimestampAsName_PrefixDisabled() { + public void testGenerateUploadPath_SuffixAsName_PrefixDisabled() { // 准备参数 String name = "test.jpg"; String directory = "avatar"; FileServiceImpl.PATH_PREFIX_DATE_ENABLE = false; FileServiceImpl.PATH_SUFFIX_TIMESTAMP_ENABLE = true; - FileServiceImpl.PATH_TIMESTAMP_AS_DIRECTORY = false; + FileServiceImpl.PATH_SUFFIX_AS_DIRECTORY = false; // 调用 String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:avatar/test_timestamp.jpg + // 格式为:avatar/test_{时间戳+随机数}.jpg assertTrue(path.matches(directory + "/test_\\d+\\.jpg")); } @Test - public void testGenerateUploadPath_TimestampAsName_NoExtension() { + public void testGenerateUploadPath_SuffixAsName_NoExtension() { // 准备参数 String name = "test"; String directory = "avatar"; FileServiceImpl.PATH_PREFIX_DATE_ENABLE = true; FileServiceImpl.PATH_SUFFIX_TIMESTAMP_ENABLE = true; - FileServiceImpl.PATH_TIMESTAMP_AS_DIRECTORY = false; + FileServiceImpl.PATH_SUFFIX_AS_DIRECTORY = false; // 调用 String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:avatar/yyyyMMdd/test_timestamp + // 格式为:avatar/yyyyMMdd/test_{时间戳+随机数} assertTrue(path.matches(directory + "/\\d{8}/test_\\d+")); } @@ -354,7 +354,7 @@ public class FileServiceImplTest extends BaseDbUnitTest { String path = fileService.generateUploadPath(name, directory); // 断言 - // 格式为:yyyyMMdd/timestamp/test.jpg + // 格式为:yyyyMMdd/{时间戳+随机数}/test.jpg assertTrue(path.matches("\\d{8}/\\d+/test\\.jpg")); }