AEM Formsで特殊文字を含むファイル名を使用すると、ファイルをアップロードできない

AEM Forms オンプレミス 6.5 のアダプティブ Formsを使用したファイルのアップロードが、ファイル名に特殊文字または Unicode 文字が含まれている場合に失敗します。 この問題は、クラウドコネクタを介して Azure Blob Storage にファイルを保存するカスタム送信アクションを使用するマルチパートフォーム送信中に発生します。 送信ハンドラーでのファイル抽出時に、part.getName() などのメソッドによって Unicode 文字が「???」や「?」に誤って置き換えられ、ファイル名のマッピングが中断されて、アップロードが成功するのを防ぎます。

これを修正するには、getSubmittedFileName() メソッドを使用して特殊文字を含むファイル名を正確に取得し、Azure Blob Storage への信頼性の高いアップロードを確保します。

説明 description

環境

  • Product:AEM Forms
  • バージョン : v6.5

問題/症状

  • 特殊文字を含むファイル名は、「???」または「?」として表示されます part.getName() を使用して取得される場合。
  • ファイル名に Unicode 文字が含まれている場合、request.getParts() メソッドはすべての添付ファイルを返すわけではありません。
  • 名前に特殊な Unicode 文字が含まれるファイル(特にマルチパートフォームの送信中)の場合、アップロードに失敗します。
  • ファイル名のエンコーディングが正しくないと、BLOB ストレージの操作に影響し、アップロードの成功を防ぐことができます。

解決策 resolution

この問題を解決するには、getSubmittedFileName() の代わりに getName() を使用するようにファイルのアップロードロジックを更新します。 これにより、特殊文字や Unicode 文字を含むファイル名が正しく取得および処理されます。 次の手順に従います。

  1. part.getName() へのすべての呼び出しをコード内の part.getSubmittedFileName() に置き換えます。 このメソッドは、特殊文字や Unicode 文字を含む元のファイル名を取得します。

  2. 様々なタイプのファイル名を持つサンプルファイルを使用して更新されたコードをテストし、正しい動作を確認します。 例:

    code language-none
    // Before (problematic) String filename = part.getName();     // After (fixed) String filename = part.getSubmittedFileName();
    
  3. 更新されたコードを実稼動環境にデプロイし、ファイルのアップロードがすべての環境とプラットフォームで機能することを確認します。

この変更により、特殊文字や Unicode 文字を含むファイルであっても、ファイル名が文字セットに関係なく正確に処理され、正常にアップロードできるようになります。

関連資料

AEM Forms 6.5 ユーザーガイドの ​AEMへのアセットの読み込みと書き出し)

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f