解决由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返回损坏的路径,其中不受支持的字符解码为?,例如上标加变为?。

根本原因:

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. 对于影响成百上千个资产的批量问题,请应用系统化的重命名。 定义经过清理的命名约定(使用“和”替换&和,删除#,使用连字符替换空格),然后将更正的文件重新摄取到AEM中,或在源系统或上游DAM中运行自动化脚本以在上传之前清理名称。 搜索以前无效的资产并确认更新的名称。
  3. 验证下游集成。 确认经过清理的名称可以解决不再显示的资产共享共用缩略图和下载、Assets API路径问题? 字符,以及Dynamic Media上传和搜索工作流。 测试搜索、API调用和发布流。
  4. 确认修复。 使用经过清理的文件名重新上传资源,并检查它是否在不发出验证警告的情况下上传、元数据是否保存、管理发布在没有​ 所选资源无效的情况下运行以及Assets API是否返回没有? ​个字符。

如果问题仍然存在

如果在处理文件名后上传、元数据编辑或发布仍失败,或者API响应显示仅包含允许字符的文件名的路径格式不正确,或者批量导入程序在各个环境中的行为不一致,请与Adobe支持部门联系。 提供确切的文件名、上传方法、环境URL、错误消息和屏幕截图。

相关阅读

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