在AEM Forms中有特殊字元的檔案名稱無法上傳檔案
當檔案名稱包含特殊或Unicode字元時,透過AEM Forms On-prem 6.5中的Adaptive Forms上傳檔案會失敗。 使用自訂提交動作(透過雲端聯結器將檔案儲存在Azure Blob儲存空間)的多部分表單提交期間,會發生此問題。 在提交處理常式的檔案擷取期間,part.getName()等方法會錯誤地將Unicode字元取代為「???」或「?」,這會中斷檔案名稱對應並阻止成功上傳。
若要修正此問題,請使用getSubmittedFileName()方法,以精確擷取含有特殊字元的檔案名稱,並確保穩定上傳至Azure Blob儲存體。
說明 description
環境
- 產品: AEM Forms
- 版本: v6.5
問題/症狀
- 含有特殊字元的檔案名稱會顯示為「???」或「?」 使用
part.getName()擷取時。 - 如果檔案名稱包含Unicode字元,
request.getParts()方法不會傳回所有附件。 - 檔案名稱中包含特殊Unicode字元時,特別是在多部分表單提交期間,上傳會失敗。
- 不正確的檔案名稱編碼會影響blob儲存體作業,導致無法成功上傳。
解決方法 resolution
若要解決此問題,請更新檔案上傳邏輯,改用getSubmittedFileName()而非getName()。 這可確保正確擷取和處理含特殊或Unicode字元的檔案名稱。 請依照下列步驟操作:
-
在您的程式碼中以
part.getName()取代所有對part.getSubmittedFileName()的呼叫。 此方法會擷取原始檔案名稱,包括特殊或Unicode字元。 -
使用具有各種檔案名稱型別的範例檔案測試更新的程式碼,以確認正確的行為。 例如,
code language-none // Before (problematic) String filename = part.getName(); // After (fixed) String filename = part.getSubmittedFileName(); -
將更新的程式碼部署到生產環境,並確認檔案上傳可在所有環境和平台上運作。
進行此變更後,無論字元集為何,檔案名稱都會正確處理,即使檔案包含特殊或Unicode字元,也能成功上傳。
相關閱讀
在AEM 6.5使用手冊中匯入和匯出資產至AEM Forms
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f