Error al cargar archivos para nombres de archivo con caracteres especiales en AEM Forms
Las cargas de archivos mediante Forms adaptable en AEM Forms On-prem 6.5 fallan cuando los nombres de archivo contienen caracteres especiales o Unicode. Este problema se produce durante los envíos de formularios de varias partes que utilizan una acción de envío personalizada que almacena archivos en el almacenamiento del blob de Azure a través de un conector de nube. Durante la extracción de archivos en el controlador de envío, los métodos como part.getName() reemplazan incorrectamente los caracteres Unicode por "???" o "?", lo que interrumpe la asignación de nombres de archivo e impide que las cargas se realicen correctamente.
Para solucionarlo, utilice el método getSubmittedFileName() para recuperar con precisión los nombres de archivo con caracteres especiales y garantizar cargas fiables al almacenamiento de Azure Blob.
Descripción description
Entorno
- Producto: AEM Forms
- Versión: v6.5
Problema/Síntomas
- Los nombres de archivo con caracteres especiales se muestran como "???" o "?" cuando se recuperó mediante
part.getName(). - El método
request.getParts()no devuelve todos los archivos adjuntos si los nombres de archivo contienen caracteres Unicode. - Las cargas fallan en los archivos con caracteres Unicode especiales en sus nombres, especialmente durante los envíos de formularios de varias partes.
- La codificación incorrecta del nombre de archivo afecta a las operaciones de almacenamiento del blob, lo que impide cargas correctas.
Resolución resolution
Para resolver el problema, actualice la lógica de carga de archivos para que use getSubmittedFileName() en lugar de getName(). Esto garantiza que los nombres de archivo con caracteres especiales o Unicode se recuperen y procesen correctamente. Siga estos pasos:
-
Reemplace todas las llamadas a
part.getName()porpart.getSubmittedFileName()en su código. Este método recupera el nombre de archivo original, incluidos los caracteres especiales o Unicode. -
Pruebe el código actualizado utilizando archivos de ejemplo con varios tipos de nombres de archivo para confirmar el comportamiento correcto. Por ejemplo,
code language-none // Before (problematic) String filename = part.getName(); // After (fixed) String filename = part.getSubmittedFileName(); -
Implemente el código actualizado en producción y compruebe que las cargas de archivos funcionan en todos los entornos y plataformas.
Al realizar este cambio, los nombres de archivo se procesan con precisión independientemente del conjunto de caracteres, lo que permite cargas exitosas incluso para archivos con caracteres especiales o Unicode.
Lectura relacionada
Importación y exportación de recursos a AEM Forms en la Guía del usuario de AEM 6.5