libriciel/file-validator

允许检查文件的有效性

1.1.12 2023-05-05 10:04 UTC

This package is auto-updated.

Last update: 2024-09-24 08:43:34 UTC


README

build status coverage report

先决条件

为了正确使用此工具,建议安装Ubuntu 16.04 LTS。需要PHP版本 >= 5.6(兼容PHP 7)。此外,您还需确保以下软件包安装以支持所有类型的文件:

sudo apt-get install imagemagick mediainfo poppler-utils catdoc zip gzip rar webp libxml2-utils
sudo sed -i.orig -e's#<policy domain="coder" rights="none" pattern="PDF" />#<policy domain="coder" rights="read" pattern="PDF" />#' "/etc/ImageMagick-6/policy.xml"

安装

composer config repositories.libriciel/file-validator git git@gitlab.libriciel.fr:file-validator/file-validator.git
composer require libriciel/file-validator ~1.0

使用 FileValidator

简单的 require_once 'vendor/bootstrap.php'; 语句即可访问库。然后,您可以按如下方式使用它:FileValidator\Utility\FileValidator::check($filename);。此命令返回文件有效性的布尔值。您可以在 "test" 部分查看使用示例。

在需要的情况下,您可以禁用特定类型文件的验证。例如,可以这样操作:FileValidator\Utility\FileValidator::$callbacks['pdf'] = 'isValid';,这样PDF文件将被视为始终有效。您可以使用此特性来覆盖类以添加一个或多个回调。如果您创建了自定义函数 checkCustomPdf(),则可以使用以下代码:FileValidator\Utility\FileValidator::$callbacks['pdf'] = 'checkCustomPdf';

在验证过程中,可能会遇到设计有误但仍然可读的文件。默认情况下,验证器将它们视为有效,但有时可能需要更严格的文件质量控制。为此,您可以设置 FileValidator\Utility\FileValidator::$allowNonFatalError = false;

如果您需要了解为什么某个文件无效,可以设置以下代码以显示某些错误:FileValidator\Utility\FileValidator::$displayErrors = true;

使用 FileIdentify

此类由 FileValidator 使用以选择要使用的回调。您可能需要修改它(其属性或通过覆盖)以添加/删除支持的文件类型。当然,您也可以用它来识别文件类型以供其他用途。为此,只需使用 File\Identify\FileIdentify::identify($filename) 以获取文件类型,如 'pdf''audio'

您可以添加文件扩展名,例如音频类型,通过以下方式:File\Identify\FileIdentify::$extensionTypes['audio'][] = 'monext' 注意这指定了MIME类型,如果 FileIdentify 检测到扩展名和MIME类型之间的不一致,将引发错误!因此,在某些情况下,您可能需要修改MIME类型的检测。尤其是对于以 application 开头的MIME类型。

要修改 application 类型的MIME类型检测,可以添加以下值到 File\Identify\FileIdentify::$typeInMime[] = 'mon-type-mime-custom',如果MIME类型的第二部分包含搜索值。注意:请注意此 数组 中的顺序,例如:gzip被放置在zip之前,否则zip会在两种情况下都被检测到。

您可以处理异常。在某些情况下,扩展名和MIME类型之间的不一致是正常的。为此,请按以下方式添加值:File\Identify\FileIdentify::$correctMismatch[] = ['ext' => 'mka', 'mime' => 'video/x-matroska', 'type' => 'audio']。在此示例中,扩展名为mka的文件是 audio 类型,其MIME类型为 video,通过在 $correctMismatch 中添加此值,此异常将被忽略。

使用 FileCorruptor

创建用于提供测试数据,但您也可以使用以下两个命令之一来使用它:

fwrite($File, File\Corruptor\FileCorruptor::lowLevelCorruption($filename));
fwrite($File2, File\Corruptor\FileCorruptor::highLevelCorruption($filename));

正如它们的名称所表明的,这两个函数提供不同的损坏级别。某些低级别损坏的文件仍然可读或可修复,而另一种损坏级别将完全修改文件。