💾 Efwフレームワーク ファイルアップロード処理のまとめ

Efwフレームワークのファイルアップロード処理は、クライアント側でのリクエスト構築から、サーバー側での厳格なセキュリティチェックと永続化まで、複数のコンポーネントが連携して実現されます。この処理は、通常のイベント処理とは異なる専用のサーブレット(uploadServlet)を介して行われます。

1. クライアント側の役割: efw.client.js

efw.client.js は、通常のイベント実行 (fire) とは別に、ファイルアップロード専用の処理を担います。

役割 説明
リクエストの準備 Efw.prototype.upload など、ファイルアップロードをトリガーする関数が実行されます。この処理は、ファイルデータを含む multipart/form-data リクエストを構築します。
パラメーターの付与 ファイル本体の他に、サーバー側の処理に必要なメタ情報(cmdidtargethomeisAbs、elFinderのパス配列 upload_path[] など)をフォームデータとして付与します。
送信先 構築したリクエストは、汎用的な efwServlet ではなく、バイナリデータ処理に特化した /uploadServlet へ直接送信されます。

2. サーバー側の役割: 受付・セキュリティ層 (uploadServlet.java)

uploadServlet.java は、ファイルデータを受け取るための専用ゲートウェイであり、セキュリティとI/Oを管理します。

🛡️ 厳格なセキュリティチェック(Java)

ファイルアップロードという高リスクな処理に対し、リクエスト解析前に以下のセキュリティチェックをJava側で実行します。

  1. ログインチェック: セッションの loginKey を確認し、非ログインユーザーからのアップロードを拒否します。
  2. 認可チェック: ユーザーの権限設定(authKey)に基づき、アップロードを許可する権限 (uploadable="true") を持つユーザーからのみ受け付けます。
  3. パスリスクチェック: アップロードパスやファイル名に、..(パスの遡り)や不正なディレクトリ文字(\/)がないかを検査し、ディレクトリトラバーサルなどのリスクを排除します。

⚙️ ファイルI/Oと管理


3. サーバー側の役割: 永続化・ロジック層 (JS)

一時保存されたファイルを永続的な場所へ移動させる処理や、イベント処理に伴うファイルのクリーンアップを行います。

A. elFinder連携による永続化 (elfinder_upload.js)

uploadServlet から呼び出されるこの関数は、ファイルアップロードの最終ロジックを担当します。

B. イベント処理後のクリーンアップ (efw.js / efw.server.js)

通常のイベント処理フローにファイルアップロードが伴う場合、ファイルは FileManager によって管理されます。


📊 ファイルアップロード処理の役割分担

コンポーネント 実行環境 主な役割
efw.client.js クライアント (ブラウザ) リクエスト構築(multipart/form-data)、/uploadServlet への送信。
uploadServlet.java サーバー (Java) セキュリティバリア(ログイン、認可、パスチェック)、I/O制御、一時ファイル保存
elfinder_upload.js サーバー (JavaScript) ターゲットパスデコード、一時ファイルから永続フォルダへの移動
efw.js / FileManager サーバー (JS/Java) リクエスト終了後の一時ファイルの自動削除(クリーンアップ)。