解決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回應損毀。
如何確認
- 請根據AEM變體的禁用字元清單檢查檔案名稱。 UI錯誤訊息會顯示無效的字元:
* / : [ \ ] | # % { } ? & ;=(適用於AEM as a Cloud Service),以及相同的集(適用於AEM 6.5)。 - 判斷資產的擷取方式:手動UI上傳、S3匯入、大量匯入工具、封裝管理員或API。 手動上傳會在無效字元時立即失敗,S3和大量匯入會無訊息地處理這些字元,而封裝管理員則會略過驗證。
解決方法 resolution
請依照下列步驟解決問題:
- 重新命名資產以移除不支援的字元。 在AEM UI中,選取資產、開啟 屬性 並重新命名資產,或重新上傳只有使用允許字元且經過清理的檔案名稱資產。 重試失敗的動作,無論該動作是中繼資料更新、發佈還是關係。
- 若為影響成百上千個資產的批次問題,請套用系統性的重新命名。 定義淨化命名慣例(以「and」取代&、移除#,並以連字型大小取代空格),然後將修正的檔案重新擷取至AEM,或在來源系統或上游DAM中執行自動化指令碼,在上傳前淨化名稱。 搜尋先前無效的資產,並確認更新的名稱。
- 驗證下游整合。 確認經過淨化處理的名稱可以解決Asset Share Commons縮圖和下載、Assets API路徑不再顯示的問題? 字元,以及Dynamic Media上傳和搜尋工作流程。 測試搜尋、API呼叫和發佈流程。
- 確認修正。 使用經過清理的檔案名稱重新上傳資產,並檢查它是否會在沒有驗證警告的情況下上傳、中繼資料是否儲存、管理發布是否會在沒有 所選資源無效的情況下執行 錯誤,以及Assets API是否會在沒有? 個字元。
如果問題仍然存在
如果您在清理檔案名稱后上傳、中繼資料編輯或發佈仍失敗、API回應對僅包含允許字元的檔案名稱顯示錯誤的路徑格式,或大量匯入工具在各個環境中的行為不一致,請聯絡Adobe支援。 提供確切的檔案名稱、上傳方法、環境URL、錯誤訊息和熒幕擷取畫面。
相關閱讀
recommendation-more-help
experience-cloud-kcs-help-kbarticles