在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字元的檔案名稱。 請依照下列步驟操作:

  1. 在您的程式碼中以part.getName()取代所有對part.getSubmittedFileName()的呼叫。 此方法會擷取原始檔案名稱,包括特殊或Unicode字元。

  2. 使用具有各種檔案名稱型別的範例檔案測試更新的程式碼,以確認正確的行為。 例如,

    code language-none
    // Before (problematic) String filename = part.getName();     // After (fixed) String filename = part.getSubmittedFileName();
    
  3. 將更新的程式碼部署到生產環境,並確認檔案上傳可在所有環境和平台上運作。

進行此變更後,無論字元集為何,檔案名稱都會正確處理,即使檔案包含特殊或Unicode字元,也能成功上傳。

相關閱讀

在AEM 6.5使用手冊中匯入和匯出資產至AEM Forms

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f