文件管理模块实现总结
最后更新: 2026-01-27 11:02:47文件管理模块实现总结
一、实现内容
1. 文件分类管理 ✅
#### 数据库
- file_categories 表:存储文件分类信息 - id, name, code, description, sort, status, created_at, updated_at, delete_time
- FileCategory 模型 (
app/admin/model/FileCategory.php) - FileCategoryController 控制器 (
app/admin/controller/FileCategoryController.php)
- - FileCategories.vue (
resources/js/admin/views/files/FileCategories.vue)
- 文件分类管理页面
- 支持添加、编辑、删除分类
- 分类代码创建后不可修改
#### 后端
- 提供分类查询和管理方法
- findByCode() - 根据代码查找
- getEnabledCategories() - 获取所有启用的分类
index() - 分类列表
- show() - 分类详情
- store() - 创建分类
- update() - 更新分类
- destroy() - 删除分类
- enabled() - 获取启用的分类(用于下拉选择)
#### 前端
2. 公共文件上传接口 ✅
#### 目录结构
common/
├── File/
│ ├── FileUploadService.php # 文件上传服务
│ ├── FileManagerService.php # 文件管理服务
│ └── README.md # 使用文档
└── README.md # 公共接口目录说明
#### FileUploadService
upload() - 单文件上传uploadMultiple() - 批量上传#### FileManagerService
getFile() - 根据 ID 获取文件getFileByPath() - 根据路径获取文件deleteFile() - 删除文件getFileUrl() - 获取文件 URL3. 文件管理改进 ✅
#### 数据库修改
category_id 字段(外键关联 file_categories)category 字段用于兼容(后续可删除)#### 后端改进
FileUploadService 进行上传#### 前端改进
category_id二、使用方式
1. 在管理后台管理文件分类
访问文件分类管理页面,添加分类:
2. 在客户端应用中使用公共上传接口
use Common\File\FileUploadService;
// 在控制器中
$uploadService = new FileUploadService();
$result = $uploadService->upload($file, [
'category_code' => 'image', // 使用分类代码
'folder' => 'uploads', // 文件夹
'description' => '描述', // 描述
'max_size' => 10 1024 1024, // 文件大小限制
'allowed_types' => ['image/jpeg', 'image/png'], // 允许的类型
]);
3. 文件管理
use Common\File\FileManagerService;
$fileManager = new FileManagerService();
// 获取文件
$file = $fileManager->getFile($fileId);
// 获取文件URL
$url = $fileManager->getFileUrl($fileId);
// 删除文件
$fileManager->deleteFile($fileId);
三、数据库迁移
需要运行以下迁移:
php console migrate
迁移文件:
20250108080000_create_files_table.php - 创建文件表20250108080001_create_file_categories_table.php - 创建文件分类表20250108080002_modify_files_table_add_category_id.php - 添加 category_id 字段四、路由配置
后端路由(已添加)
// 文件管理路由
/admin/api/files/*
// 文件分类管理路由
/admin/api/file-categories/*
前端路由(需要添加)
需要在 Vue 路由中添加文件分类管理页面:
{
path: '/files/categories',
name: 'FileCategories',
component: () => import('../views/files/FileCategories.vue'),
}
五、Composer 自动加载
已更新 composer.json,添加了 Common 命名空间:
"autoload": {
"psr-4": {
"Common\\": "common/"
}
}
需要运行:
composer dump-autoload
六、功能特性
✅ 已实现
📝 使用示例
examples/file_upload_usage.php - 完整的使用示例common/File/README.md - 使用文档