orkhanahmadov/laravel-zip-validator

Laravel ZIP 文件内容验证器

1.11.0 2023-12-21 20:43 UTC

This package is auto-updated.

Last update: 2024-09-21 22:17:41 UTC


README

Buy us a tree Latest Stable Version Latest Unstable Version Total Downloads GitHub license

Build Status Test Coverage Maintainability Quality Score StyleCI

用于检查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.jpgthumb.pngthumb.svg 文件。

当然,您还可以使用 "OR" 验证来验证文件大小

new ZipContent(['thumb.jpg|thumb.png' => 100000]);

上述示例将检查ZIP文件中是否存在 thumb.jpgthumb.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)。请参阅许可证文件获取更多信息。