Class FileIdGenerator
java.lang.Object
io.leandev.appfuse.file.FileIdGenerator
檔案 ID 生成器
生成可讀且唯一的檔案 ID,格式為:
{yyyy-MM-dd/{HH}/{sanitizedFilename}-{shortUuid}.{ext}}
範例
輸入:rose-bouquet.jpg
輸出:2025-12-26/14/rose-bouquet-a1b2c3d4.jpg
設計考量
- 時間維度:方便按日期管理、清理過期檔案
- 保留原始檔名:除錯時容易辨識
- 短 UUID 後綴:保證唯一性,無需衝突檢測
使用方式
可以透過靜態方法直接使用,或建立實例注入到 FileStorage 實作中。
// 靜態方法
String fileId = FileIdGenerator.generate("rose-bouquet.jpg");
// 實例方法(用於依賴注入)
FileIdGenerator generator = new FileIdGenerator();
String fileId = generator.generateId("rose-bouquet.jpg");
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringextractDatePath(String fileId) 從檔案 ID 提取日期路徑static StringextractFilename(String fileId) 從檔案 ID 提取檔名部分static String生成可讀的檔案 IDstatic Stringgenerate(String originalFilename, LocalDateTime dateTime) 生成可讀的檔案 ID(可指定時間,方便測試)generateId(String originalFilename) 生成可讀的檔案 ID(實例方法)generateId(String originalFilename, LocalDateTime dateTime) 生成可讀的檔案 ID(實例方法,可指定時間)
-
Constructor Details
-
FileIdGenerator
public FileIdGenerator()預設建構子
允許實例化以便在 Builder 模式中使用。
-
-
Method Details
-
generateId
-
generateId
生成可讀的檔案 ID(實例方法,可指定時間)- Parameters:
originalFilename- 原始檔名dateTime- 時間戳記- Returns:
- 檔案 ID
-
generate
-
generate
生成可讀的檔案 ID(可指定時間,方便測試)- Parameters:
originalFilename- 原始檔名dateTime- 時間戳記- Returns:
- 檔案 ID
-
extractDatePath
-
extractFilename
-