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. 路径配置
支持相对路径和绝对路径两种模式:
<!-- 相对路径 -->
<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应用场景。
使用时应特别注意路径安全和权限控制,避免潜在的安全风险。在生产环境中,建议使用相对路径、保护模式和适当的只读限制,确保系统安全。