changhorizon/file-uploader
Composer 安装命令:
composer require changhorizon/file-uploader
包简介
A flexible, decoupled file upload library with customizable validation and scoped storage management for secure and maintainable uploads.
README 文档
README
灵活、解耦的文件上传组件
一个轻量组件,支持自定义验证和作用域标识管理(ScopedStorageStrategy),适合有状态或无状态的 HTTP API 场景,可快速集成到现有系统。
✨ 特性
- 自定义文件验证:通过
UploadedFileValidator支持扩展名、大小等规则 - 作用域标识管理:支持
ScopedStorageStrategy管理文件作用域或会话信息 - 面向接口编程:核心接口
FileUploaderInterface、UploadContextInterface、UploadedFileInterface易于扩展 - 轻量易用:独立组件,可快速集成到现有系统,无需依赖框架
📦 安装
composer require changhorizon/file-uploader
📂 目录结构
src ├── Exception │ ├── FileUploadEmptyException.php │ └── FileUploadException.php ├── Local │ ├── FileUploader.php │ ├── UploadContext.php │ ├── UploadedFile.php │ └── UploadedFileResult.php ├── Validator │ └── UploadedFileValidator.php ├── FileUploaderInterface.php ├── UploadContextInterface.php ├── UploadedFileInterface.php └── UploadedFileResultInterface.php
🚀 用法示例
示例 1:单文件上传
use ChangHorizon\FileUploader\Local\FileUploader; use ChangHorizon\FileUploader\Local\UploadContext; use ChangHorizon\FileUploader\Local\UploadedFile; use ChangHorizon\FileUploader\Validator\UploadedFileValidator; $file = new UploadedFile('example.png', 'image/png', '/tmp/php123', 102400); $context = new UploadContext( basePath: '/var/www/uploads', validator: new UploadedFileValidator() ); $uploader = new FileUploader($context); $result = $uploader->upload($file); if ($result->isValid()) { echo "File uploaded successfully: " . $result->getPath(); } else { echo "Upload failed: " . $result->getError(); }
示例 2:多文件上传
$files = [ new UploadedFile('a.png', 'image/png', '/tmp/phpA', 102400), new UploadedFile('b.pdf', 'application/pdf', '/tmp/phpB', 204800), ]; $results = []; foreach ($files as $file) { $results[] = $uploader->upload($file); } foreach ($results as $result) { if ($result->isValid()) { echo "Uploaded: " . $result->getPath() . PHP_EOL; } else { echo "Failed: " . $result->getError() . PHP_EOL; } }
📐 接口说明
FileUploaderInterface
文件上传核心接口,提供单文件和批量上传方法
interface FileUploaderInterface { public function upload(UploadedFileInterface $file): UploadedFileResultInterface; }
UploadedFileValidator
文件验证器,可自定义允许的扩展名和大小限制
class UploadedFileValidator { public function __construct(array $allowedExtensions = ['jpg','png','gif','pdf'], int $maxSize = 5_000_000) { ... } public function validate(UploadedFileInterface $file): ValidationResult { ... } }
🔍 静态分析
使用 PHPStan 工具进行静态分析,确保代码的质量和一致性:
composer stan
🎯 代码风格
使用 PHP-CS-Fixer 工具检查代码风格:
composer cs:chk
使用 PHP-CS-Fixer 工具自动修复代码风格问题:
composer cs:fix
✅ 单元测试
执行 PHPUnit 单元测试:
composer test
执行 PHPUnit 单元测试并生成代码覆盖率报告:
composer test:coverage
🤝 贡献指南
欢迎 Issue 与 PR,建议遵循以下流程:
- Fork 仓库
- 创建新分支进行开发
- 提交 PR 前请确保测试通过、风格一致
- 提交详细描述
📜 License
MIT License. See the LICENSE file for details.
changhorizon/file-uploader 适用场景与选型建议
changhorizon/file-uploader 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「validator」 「uploader」 「file-upload」 「scoped-check」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 changhorizon/file-uploader 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 changhorizon/file-uploader 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 changhorizon/file-uploader 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
An HTML5 upload field for the CMS and frontend forms.
Runn Me! Validation and Sanitization Library
Extension for Opis JSON Schema
Smart file uploader for Laravel
Integrates the rekalogika/file library into the Symfony framework.
Upload files using Symfony Form, FilePond, and the rekalogika/file framework
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 34
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-11