文件上传RAR支持说明

系统管理员 2026-01-22 10:42 0 阅读 0 点赞
# 文件上传RAR支持说明 ## 功能概述 系统已支持ZIP和RAR两种压缩格式的批量文件导入功能。 ## 已实现功能 ### 1. 前端支持 - ✅ 文件选择后显示文件名和大小 - ✅ 支持拖拽上传 - ✅ 支持ZIP和RAR格式选择 - ✅ 文件列表实时预览 - ✅ 可删除已选文件 ### 2. 后端支持 - ✅ ZIP格式解压(使用ZipArchive类) - ✅ RAR格式解压(使用RarArchive类) - ✅ 自动识别压缩格式 - ✅ 批量导入文档 - ✅ 导入结果统计 ## RAR扩展安装 ### Windows系统 1. 下载PHP RAR扩展DLL文件 - 访问:https://pecl.php.net/package/rar - 下载对应PHP版本的DLL文件 2. 安装步骤 ``` 1. 将 php_rar.dll 复制到 PHP 的 ext 目录 2. 编辑 php.ini,添加:extension=rar 3. 重启Web服务器(Apache/Nginx) 4. 运行 php -m 检查是否加载成功 ``` ### Linux系统 1. 使用PECL安装 ```bash # 安装依赖 sudo apt-get install libunrar-dev # Debian/Ubuntu sudo yum install unrar-devel # CentOS/RHEL # 安装RAR扩展 sudo pecl install rar # 启用扩展 echo "extension=rar.so" | sudo tee /etc/php/8.1/mods-available/rar.ini sudo phpenmod rar # 重启服务 sudo systemctl restart php8.1-fpm sudo systemctl restart nginx ``` 2. 验证安装 ```bash php -m | grep rar ``` ## 使用说明 ### 1. 上传ZIP文件 - 选择"ZIP批量上传"选项卡 - 点击或拖拽ZIP文件到上传区域 - 系统会自动解压并导入所有支持的文档 ### 2. 上传RAR文件 - 选择"ZIP批量上传"选项卡(同时支持RAR) - 点击或拖拽RAR文件到上传区域 - 如果服务器已安装RAR扩展,会自动解压导入 - 如果未安装扩展,会提示安装说明 ### 3. 支持的文档格式 - TXT(纯文本) - MD(Markdown) - PDF(需要pdftotext工具) - DOCX(Word文档) - DOC(旧版Word) - XLSX(Excel) - XLS(旧版Excel) - CSV(逗号分隔值) - HTML/HTM(网页) - JSON(数据文件) ## 错误处理 ### 如果RAR解压失败 系统会返回友好提示: ``` 服务器不支持RAR解压,请安装rar扩展或使用ZIP格式 ``` **解决方案:** 1. 按照上述说明安装RAR扩展 2. 或者将RAR文件转换为ZIP格式后上传 ### Linux系统识别为bin类型 **问题原因:** Linux系统可能无法正确识别文件MIME类型 **已修复:** - 后端已添加多种MIME类型支持 - 使用文件扩展名作为备用判断 - 支持:application/zip, application/x-zip-compressed, application/x-rar-compressed, application/vnd.rar ## 测试建议 1. **测试ZIP上传** - 创建包含多个文档的ZIP文件 - 上传并验证所有文件是否正确导入 2. **测试RAR上传** - 创建包含多个文档的RAR文件 - 上传并检查是否正确解压 - 如果失败,按照说明安装RAR扩展 3. **测试文件显示** - 选择文件后应立即显示文件名和大小 - 可以点击删除按钮取消选择 - 重新选择文件应更新显示 ## 技术细节 ### 文件大小格式化 ```javascript function formatFileSize(bytes) { if (bytes === 0) return '0 B'; var k = 1024; var sizes = ['B', 'KB', 'MB', 'GB']; var i = Math.floor(Math.log(bytes) / Math.log(k)); return (bytes / Math.pow(k, i)).toFixed(2) + ' ' + sizes[i]; } ``` ### RAR解压逻辑 ```php if (!class_exists('RarArchive')) { return $this->error('服务器不支持RAR解压,请安装rar扩展或使用ZIP格式'); } $rar = \RarArchive::open($archivePath); $entries = $rar->getEntries(); foreach ($entries as $entry) { if (!$entry->isDirectory()) { $entry->extract($extractDir); } } $rar->close(); ``` ## 注意事项 1. **文件大小限制** - 受PHP配置限制(upload_max_filesize, post_max_size) - 建议设置为至少50MB 2. **超时设置** - AJAX请求超时设置为300秒(5分钟) - 适合处理大型压缩包 3. **临时文件清理** - 系统会自动清理解压后的临时文件 - 无需手动维护 4. **安全性** - 只支持预定义的文件类型 - 自动过滤不支持的文件 - 防止路径遍历攻击
评论 (0)
登录 后参与评论

暂无评论