用途:在 Bitrix 项目中规范处理文件(b_file 存储、上传校验、前端上传组件后端、文件交付与删除)。基线要求 main 23.0+,已在 main 26.800.0、ui 26.687.0 验证。
主要能力与规则:
- 存储:可通过 CFile 的 SaveFile、MakeFileArray、GetFileArray、ResizeImageGet、Delete 完成保存、读取、缩放与删除;涉及 b_file 结构、云存储,以及在保留 ID 的前提下替换内容。
- 上传:动作中接收上传需做校验、MIME 检测,兼容旧的 main.file.input。
- ui.uploader 后端:使用 UploaderController,并提交待处理的 pending 文件。
- 交付:通过 BFile 提供文件,处理私有文件与查看器。
关键约束:只能通过 CFile 写 b_file,FileTable 只读,其 add/update/delete 会抛 NotImplementedException;应保存文件 ID 而非路径。获取 URL 用 CFile::GetFileArray()['SRC'] 或 CFile::GetPath();取本地字节用 CFile::MakeFileArray($id)['tmp_name']。不要自行拼接 /upload/ 与 SUBDIR,云存储、upload_dir 选项与替换都会使其失效。客户端文件名、MIME、大小均不可信,需白名单扩展名、按内容检测 MIME 并解码图片。不要把用户输入传给 CFile::MakeFileArray(),它会读取本地路径、b_file ID 与 URL。 /upload/ 下所有内容都可被 URL 访问,私有文件必须经检查权限的动作交付。CFile::Delete() 会删除物理文件及缩放缓存,且不可撤销。
关联:JS 组件(ui.uploader、ui.viewer)见 bitrix-ui;Uploader 配置在 .settings.php,见 bitrix-settings;文件字段见 bitrix-iblocks、bitrix-highloadblock。
限制:资料以规则文档形式给出,未提供具体安装命令、收费方式与价格,暂未提供。