\App\Http\Requests\AdminMaintainFileRequest

文件维护请求

职责:校验文件上传/重命名/目录/批量操作等维护场景入参——MIME 白名单(内容 嗅探)、分类白名单、批量 action 与目录字段,并按路由 action 追加 store/rename/folderStore/move/batch 的条件必填。

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 常量 ALLOWED_MIMES 分区 2 · 校验规则 rules 分区 3 · 错误文案 messages 分区 4 · 条件校验 withValidator 分区 5 · 内部辅助 allowedMimes └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
rules()
messages()
withValidator()
No public properties found
ALLOWED_MIMES
No protected methods found
No protected properties found
N/A
allowedMimes()
No private properties found
N/A

Constants

ALLOWED_MIMES

ALLOWED_MIMES = [
    // 图片(不含 svg)
    'image/jpeg',
    'image/png',
    'image/gif',
    'image/webp',
    'image/bmp',
    'image/x-ms-bmp',
    // 文档
    'application/pdf',
    'application/msword',
    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'application/vnd.ms-excel',
    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    'application/vnd.ms-powerpoint',
    'application/vnd.openxmlformats-officedocument.presentationml.presentation',
    'text/plain',
    'text/csv',
    // 压缩包
    'application/zip',
    'application/x-zip-compressed',
    'application/x-rar-compressed',
    'application/vnd.rar',
    'application/x-7z-compressed',
    'application/x-tar',
    'application/gzip',
    'application/x-gzip',
    // 音视频(与 FileUploadHelper::$fileTypeMap 扩展名白名单保持同一允许集)
    'audio/mpeg',
    'audio/wav',
    'audio/x-wav',
    'video/mp4',
    'video/x-msvideo',
    'video/quicktime',
    'video/x-ms-wmv',
    'video/x-ms-asf',
    'video/x-flv',
    'video/webm',
    'video/x-rmvb',
    'video/x-rm',
    // 电子书
    'application/epub+zip',
    'application/x-mobipocket-ebook',
    // 字体(含 fileinfo 旧别名变体)
    'font/ttf',
    'font/otf',
    'font/woff',
    'font/woff2',
    'application/x-font-ttf',
    'application/x-font-otf',
    'application/x-font-woff',
    // 其他(文本/配置类)
    'application/json',
    'application/x-yaml',
    'text/yaml',
    'text/x-yaml',
]

允许上传的 MIME 白名单(内容嗅探,按真实 MIME 名匹配;svg 移除——防存储型 XSS)。

注意:Laravel 的 mimetypes 规则只接受 MIME 类型名(如 image/jpeg)或“类型/*”通配, 不接受扩展名(jpg/png 等一律匹配不上,会导致所有文件都被拒)。 此处包含 fileinfo 常见别名(如 image/x-ms-bmp、application/x-zip-compressed、video/x-ms-asf), 避免同一格式因 libmagic 版本差异被误拒。

可配置:优先读 FILE 分组 file.allowed_mimes(逗号分隔), 留空/配置失效回落本内置默认(安全底线)。新增格式须与分类扩展名映射($fileTypeMap)同步。

Methods

rules()

rules() : array

校验规则。

意图:file 大小上限与 MIME 白名单可配置(file.max_size_mb / file.allowed_mimes); file_type 须落在分类白名单内;file_target/is_shared/file_name 各自约束; ids 上限 100;action 仅 trash/restore/copy/move;scene 须为 FileScene 注册表中的场景;目录字段(name/parent_id/sort/status)各自约束。

Returns

array —

messages()

messages() : array

错误文案。

意图:为文件/分类/文件名/批量参数/操作类型的规则失败提供中文提示; :max 由校验规则动态代入(勿写死数字)。

Returns

array —

withValidator()

withValidator(\Illuminate\Validation\Validator  $validator) : void

按路由 action 附加条件必填。

意图:store 时 file/file_type 必填;rename 时 file_name 必填; folderStore/publicFolderStore 时 name 必填;move 时 folder_id 必填; batch 时 ids/action 必填,批量移动必须带目标目录。

Parameters

\Illuminate\Validation\Validator $validator

allowedMimes()

allowedMimes() : string[]

生效的 MIME 白名单:配置 file.allowed_mimes(逗号分隔)优先, 留空/配置失效回落内置默认(安全底线)。

Returns

string[] —