# 文件模块(底层模块) ## 模块概述 文件模块是一个用于处理文件和图片上传、存储和访问的基础模块,供其他模块使用,提提供外部服务。 该模块提供了文件和图片的上传、存储、访问和管理功能,支持公共和私有文件的区分,以及文件与其他模块实体的关联。 ## 目录结构 ``` app/Module/File/ ├── AdminControllers/ # 后台控制器 │ ├── Actions/ # 自定义操作 │ └── Helper/ # 控制器辅助类 ├── Casts/ # 模型属性转换器 ├── Config/ # 配置文件 ├── Databases/ # 数据库相关文件 │ └── GenerateSql/ # 自动生成的SQL文件 ├── Docs/ # 文档 │ ├── 数据库设计.md # 数据库设计文档 │ └── 服务使用说明.md # 服务使用说明文档 ├── Enums/ # 枚举类 ├── Events/ # 事件 ├── Exceptions/ # 异常处理 ├── Listeners/ # 事件监听器 ├── Logics/ # 业务逻辑层 ├── Models/ # 数据模型 │ ├── FileFile.php # 文件模型 │ ├── FileImg.php # 图片文件模型 │ └── FileTemplate.php # 文件模板模型 ├── Repositories/ # 数据仓库层 ├── Services/ # 服务层 ├── Validation/ # 验证规则 └── Validator/ # 验证器 └── UserFileImgValidator.php # 用户图片文件验证器 ``` ## 数据库表结构 ### 文件表 (file_files) 存储普通文件信息。 | 字段名 | 类型 | 说明 | |-------|------|------| | id | bigint | 主键 | | path | varchar(1000) | 存储目录 | | re_type | varchar(100) | 关联类型 | | re_id | int | 关联ID | | o_name | varchar(200) | 原文件名 | | fsize | bigint | 文件大小 | | type1 | varchar(100) | 文件类型 | | updated_at | timestamp | 更新时间 | | created_at | timestamp | 创建时间 | | deleted_at | timestamp | 删除时间 | ### 图片表 (file_imgs) 存储图片文件信息。 | 字段名 | 类型 | 说明 | |-------|------|------| | id | bigint | 主键 | | storage_disk | varchar(100) | 存储磁盘 | | path | varchar(1000) | 存储路径 | | user_id | bigint | 用户ID | | admin_id | bigint | 管理员ID | | re_type | varchar(100) | 关联类型 | | re_id | int | 关联ID | | o_name | varchar(200) | 原文件名 | | fsize | bigint | 文件大小 | | width | int | 图片宽度 | | height | varchar(1000) | 图片高度 | | type1 | varchar(100) | 图片类型 | | private | tinyint | 是否私有,0:公共,1:私有 | | updated_at | timestamp | 更新时间 | | created_at | timestamp | 创建时间 | | deleted_at | timestamp | 删除时间 | ### 文件模板表 (file_template) 存储文件模板信息。 | 字段名 | 类型 | 说明 | |-------|------|------| | id | bigint | 主键 | | unid | varchar(500) | 标识 | | file_id | int | 文件ID | | title | varchar(500) | 模板标题 | | desc | varchar(100) | 描述 | | status | varchar(1) | 状态 | | group | varchar(100) | 分组 | | updated_at | timestamp | 更新时间 | | created_at | timestamp | 创建时间 | | deleted_at | timestamp | 删除时间 | ## 主要功能 ### 文件上传 模块提供了文件和图片的上传功能,支持将文件上传到指定的存储磁盘,并记录文件信息到数据库。 ### 图片处理 支持图片的上传、转换和处理,包括图片格式转换、缩放等功能。 ### 文件访问 提供了获取文件和图片URL的方法,支持公共和私有文件的访问控制。 ### 临时文件处理 支持临时文件的创建、存储和访问,用于临时文件处理场景。 ### 文件模板 支持文件模板的管理,可用于生成基于模板的文件。 ## 使用示例 ### 上传用户图片 ```php // 创建用户上传处理器 $uploader = new \App\Module\File\Upload4User($userId); // 上传图片 $fileImg = $uploader->uploadImg($request->file('image')); // 获取图片URL $imageUrl = $fileImg->getUrl(); ``` ### 获取图片URL ```php // 通过ID获取图片URL $imageUrl = \App\Module\File\Img::getPicUrl4Id($imageId); // 通过路径获取管理后台图片URL $imageUrl = \App\Module\File\Img::getAdminPicUrl($imagePath); ``` ### 临时文件处理 ```php // 保存临时文件 $path = \App\Module\File\Temporary::save('jpg', $fileContent); // 获取临时文件下载URL $downloadUrl = \App\Module\File\Temporary::getDownUrl($path); ``` ### 文件存在性检查 ```php // 检查文件是否存在 $exists = \App\Module\File\File::fileExists($filePath); ``` ## 配置 文件模块使用Laravel的文件系统配置,主要配置项包括: - `FILESYSTEM_DISK`: 默认存储磁盘,默认为'local' - `FILESYSTEM_TEMP_DISK`: 临时文件存储磁盘,默认与FILESYSTEM_DISK相同 这些配置可以在.env文件中设置。