efw elFinder ファイルマネージャーサンプル
概要
efwフレームワークはelFinderファイルマネージャーを統合しており、シンプルなタグでWebアプリケーションに完全なファイル管理機能を実現します。elFinderはJavaScriptとPHPベースの一般的なファイルマネージャーであり、efwフレームワークはこれをカプセル化し、Javaコネクタを提供し、JSPタグ形式で提供します。
コアファイル
- 基本使用法サンプル:
helloElfinder.jsp - セキュリティ設定テストサンプル:
helloElfinder4.jsp
機能特性
1. 基本使用
elFinderはシンプルなタグ呼び出しで使用可能:
<efw:elFinder home=""/>
home属性はWEB-INF/efw/storageディレクトリに対する相対パスを指定- Windowsエクスプローラーに類似したインターフェース、ドラッグ&ドロップアップロード、複数ファイル/フォルダ操作、右クリックメニューをサポート
2. パス設定
相対パスと絶対パスの2つのモードをサポート:
<!-- 相対パス -->
<efw:elFinder home="upload"/>
<!-- 絶対パス -->
<efw:elFinder home="C:\Windows\Microsoft.NET\Framework64" isAbs="true"/>
3. セキュリティ設定
efwはパスに..が含まれる場合にエラーを検出します。さらに様々なセキュリティ設定オプションを提供:
保護モード (protected="true")
- ユーザーが指定ディレクトリ外へのナビゲーションを防止
- 読み取り専用モードの設定変更時にもエラーを発生
読み取り専用モード (readonly="true")
- ユーザーのファイル閲覧のみを許可、変更、削除、アップロード操作を制限
- 非保護モードではJavaScript APIで動的に切り替え可能
// 読み取り専用モード切り替え
elfinder1.setReadOnly(true); // 読み取り専用を有効化
elfinder1.setReadOnly(false); // 読み取り専用を無効化
絶対パスモード (isAbs="true")
- サーバー上の任意のパスへのアクセスを許可
- 無保護モードでは極めて危険、慎重な使用が必要
ログ保存関数 (saveLogFunc="myFunc")
- ログ情報をグローバル関数
myFuncに渡す
4. API機能
elFinderコンポーネントは必要なJavaScript APIを提供:
// カレントディレクトリ変更
elfinder1.setHome('C:/EFW_ALL');
// 読み取り専用モード切り替え
elfinder1.setReadOnly(true);
セキュリティ注意事項
1. パストラバーサル防止
- フレームワークは
..を含むパス操作を自動検出して阻止
2. ファイル操作リスク
- elFinderから削除されたファイルはサーバーから物理的に削除
- 本番環境では読み取り専用モードの使用または厳格な権限制限を推奨
3. ディレクトリサイズ制限
- 単一フォルダ内の大量ファイルはメモリ溢れの原因となる可能性
- システムディレクトリ(例:
C:\Windows)の指定を回避
4. ネットワーク環境考慮
- 絶対パスモードと無保護モードでは、ユーザーの
setHome呼び出しでシステム機密ファイルへアクセス可能 - インターネット環境での絶対パスと無保護モードの使用は極めて危険
使用推奨事項
- 開発環境: 様々なディレクトリへのアクセスを容易にするため絶対パスを使用可能
- 本番環境: 相対パスと保護モードを使用し、特定ディレクトリ内に制限
- 機密操作: 誤操作防止のため読み取り専用モードを組み合わせ
- パフォーマンス考慮: 大量ファイルを含むディレクトリの指定を回避
拡張機能
1. ファイルプレビュー
elFinderは多种ファイルタイプのプレビューをサポート:
- 画像ファイル(JPG, PNG, GIF等)
- PDF文書
- Office文書(拡張機能のインストールが必要)
まとめ
efwのelFinderコンポーネントは強力で便利なファイル管理機能を提供し、シンプルなタグ呼び出しでデスクトップエクスプローラー類似の体験を実現します。適切なセキュリティオプションの設定により、利便性と安全性のバランスを取ることができ、様々なWebアプリケーションシナリオに適用可能です。
使用時はパスセキュリティと権限制御に特に注意し、潜在的なセキュリティリスクを回避する必要があります。本番環境では、相対パス、保護モード、適切な読み取り専用制限の使用を推奨し、システムセキュリティを確保します。