Class FileIdGenerator
java.lang.Object
io.leandev.appfuse.file.FileIdGenerator
檔案 ID 生成器
生成可攜且唯一的 ASCII-only 檔案 ID,格式為:
{yyyy-MM-dd}/{HH}/{uuid}
範例
輸入:發酵乳.jpeg
輸出:2025-12-26/14/12345678-1234-1234-1234-123456789abc
設計考量
- 時間維度:方便按日期管理、清理過期檔案
- ASCII-only:Local、SFTP 與 object storage 共用相同可攜識別碼,不依賴 OS 檔名編碼
- 完整 UUID:原始檔名不再參與唯一性,仍維持足夠的碰撞安全性
- 原始檔名:由
FileStorage.FileMetadata保存,不混入實體路徑或 object key
使用方式
可以透過靜態方法直接使用,或建立實例注入到 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- 原始檔名(保留參數相容性,不寫入 ID)dateTime- 時間戳記- Returns:
- 檔案 ID
-
generate
-
generate
生成可攜的檔案 ID(可指定時間,方便測試)- Parameters:
originalFilename- 原始檔名(保留參數相容性,不寫入 ID)dateTime- 時間戳記- Returns:
- 檔案 ID
-
extractDatePath
-
extractFilename
-