orkhanahmadov / laravel-zip-validator
Laravel ZIP 文件内容验证器
Requires
- php: ^8.0
- ext-zip: *
- illuminate/contracts: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.0|^10.0
README
用于检查ZIP文件内容的自定义Laravel验证规则。
要求
- Laravel 9 或更高版本
- PHP 8.0 或更高版本,且已启用
zip扩展
安装
您可以通过composer安装此包
composer require orkhanahmadov/laravel-zip-validator
使用方法
使用带有所需文件列表的 ZipContent 规则。
use Orkhanahmadov\ZipValidator\Rules\ZipContent; public function rules() { return [ 'file' => [ 'required', 'file', 'mimes:zip', new ZipContent('thumb.jpg', 'assets/logo.png'), ], ]; }
将所需文件/文件夹列表传递给验证器的构造函数。
您可以将文件作为不同的构造函数参数或作为数组传递。如果文件嵌套在文件夹中,请传递到文件的相对路径。
如果传递的任何文件在ZIP存档中不存在,验证器将失败。
验证最大文件大小
验证器还允许检查ZIP存档中每个文件的最大大小。
只需将文件名作为数组键和最大大小作为值传递即可。
new ZipContent(['thumb.jpg' => 100000]);
上述示例中的验证器将查找最大大小为100000字节(100KB)的 thumb.jpg 文件。
您还可以混合使用具有名称或名称+大小验证的多个文件。
new ZipContent(['thumb.jpg' => 100000, 'logo.png']);
具有 "OR" 验证的多个文件
您还可以使用 | 符号传递多个文件,如果ZIP文件中存在任何这些文件,验证器将成功。
new ZipContent('thumb.jpg|thumb.png|thumb.svg');
上述示例中的验证器将检查ZIP文件中是否存在 thumb.jpg 或 thumb.png 或 thumb.svg 文件。
当然,您还可以使用 "OR" 验证来验证文件大小
new ZipContent(['thumb.jpg|thumb.png' => 100000]);
上述示例将检查ZIP文件中是否存在 thumb.jpg 或 thumb.png 文件,并且其文件大小不超过100000字节(100KB)。
注意,当使用带有附加文件大小验证的 "OR" 验证时,验证器将比较文件大小与ZIP存档中第一个匹配的元素。
拒绝空文件
默认情况下,验证器仅检查具有给定名称的文件是否存在,即使匹配名称的文件为空(大小为0字节),它也会返回true。
如果您想验证器拒绝0字节的文件,请将文件数组作为第一个参数,将 false 作为第二个参数传递给构造函数。
new ZipContent(['thumb.jpg', 'style.css'], false);
通配符文件名匹配
此外,您还可以使用 * 符号进行通配符文件名匹配。
new ZipContent('*.jpg');
如果Zip存档包含任何具有 .jpg 扩展的文件,这将返回true。
文件名匹配使用 fnmatch 函数。您可以使用其 模式 中的任何一种。
测试
composer test
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过ahmadov90@gmail.com 发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可
麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。