对于AEM Forms中具有特殊字符的文件名,文件上传失败
当文件名包含特殊或Unicode字符时,通过AEM Forms On-prem 6.5中的自适应Forms进行的文件上传失败。 在使用自定义提交操作(通过云连接器将文件存储在Azure Blob存储中)提交多部分表单期间发生此问题。 在提交处理程序中进行文件提取期间,part.getName()等方法错误地将Unicode字符替换为“???”或“?”,从而中断文件名映射并阻止成功上传。
要解决此问题,请使用getSubmittedFileName()方法准确检索带有特殊字符的文件名,并确保向Azure Blob Storage的可靠上载。
描述 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