解決AEM檔案名稱中不支援的字元所導致的資產上傳和中繼資料錯誤

AEM Assets會對資產和資料夾名稱強制進行嚴格的驗證,因此當檔案名稱包含不支援的字元(例如*、/、:、#、%、&或{})時,上傳、中繼資料更新、發佈動作和API回應都會失敗。 AEM UI會徹底封鎖這些字元,而大量匯入和API擷取會以無訊息的方式加以清理或URL編碼,而下游系統(如Dynamic Media或Assets API)則會傳回中斷的路徑。 原因在於AEM、基礎JCR存放庫和連線的系統無法安全地儲存或處理這些字元。 將受影響的資產重新命名為僅使用允許的字元,然後重新內嵌這些資產,會還原上傳、中繼資料編輯、發佈及清除API路徑。

說明 description

環境:

  • Adobe Experience Manager as a Cloud Service
  • Adobe Experience Manager Managed Services
  • Adobe Experience Manager 6.5 (內部部署)
  • AEM Assets、大量匯入工具和Assets API
  • Dynamic Media (Scene7)和資產共用公域

問題/症狀:

  • AEM UI上傳失敗並出現訊息​字元「*/:[ ']」 檔案名稱「」中不允許|#%{}?&。
  • 管理發行集傳回​當檔案名稱包含#時,選取的資源無效
  • 在檔案名稱包含&或其他無效字元的資產上,無法更新中繼資料。
  • 資產關係失敗,因為​無法更新關係,因為資產名稱中有特殊字元。
  • 大量匯入工具或S3匯入工具會透過逸出字元來重新命名資產,例如將撇號重新命名為%27或將%重新命名為%25
  • Assets API會傳回不支援的字元解碼為?的損壞路徑,例如上標加上being ?。

根本原因:

AEM、基礎JCR存放庫以及下游系統(例如Dynamic Media和Assets API)無法安全地儲存或處理包含特定字元的資產名稱。 AEM UI會強制進行使用者端驗證,而大量匯入和API擷取會套用JCR清理和URL編碼規則。 不支援的字元會導致擷取失敗、中繼資料更新失敗、發佈問題,以及API回應損毀。

如何確認

  1. 請根據AEM變體的禁用字元清單檢查檔案名稱。 UI錯誤訊息會顯示無效的字元: * / : [ \ ] | # % { } ? & ;= (適用於AEM as a Cloud Service),以及相同的集(適用於AEM 6.5)。
  2. 判斷資產的擷取方式:手動UI上傳、S3匯入、大量匯入工具、封裝管理員或API。 手動上傳會在無效字元時立即失敗,S3和大量匯入會無訊息地處理這些字元,而封裝管理員則會略過驗證。

解決方法 resolution

請依照下列步驟解決問題:

  1. 重新命名資產以移除不支援的字元。 在AEM UI中,選取資產、開啟 屬性 並重新命名資產,或重新上傳只有使用允許字元且經過清理的檔案名稱資產。 重試失敗的動作,無論該動作是中繼資料更新、發佈還是關係。
  2. 若為影響成百上千個資產的批次問題,請套用系統性的重新命名。 定義淨化命名慣例(以「and」取代&、移除#,並以連字型大小取代空格),然後將修正的檔案重新擷取至AEM,或在來源系統或上游DAM中執行自動化指令碼,在上傳前淨化名稱。 搜尋先前無效的資產,並確認更新的名稱。
  3. 驗證下游整合。 確認經過淨化處理的名稱可以解決Asset Share Commons縮圖和下載、Assets API路徑不再顯示的問題? 字元,以及Dynamic Media上傳和搜尋工作流程。 測試搜尋、API呼叫和發佈流程。
  4. 確認修正。 使用經過清理的檔案名稱重新上傳資產,並檢查它是否會在沒有驗證警告的情況下上傳、中繼資料是否儲存、管理發布是否會在沒有​ 所選資源無效的情況下執行 ​錯誤,以及Assets API是否會在沒有? 個字元。

如果問題仍然存在

如果您在清理檔案名稱后上傳、中繼資料編輯或發佈仍失敗、API回應對僅包含允許字元的檔案名稱顯示錯誤的路徑格式,或大量匯入工具在各個環境中的行為不一致,請聯絡Adobe支援。 提供確切的檔案名稱、上傳方法、環境URL、錯誤訊息和熒幕擷取畫面。

相關閱讀

recommendation-more-help
experience-cloud-kcs-help-kbarticles