Search by

libriciel / file-validator

ludeusepommateaupviver

Permet de vérifier la validité d'un fichier

1.1.12 2023-05-05 10:04 UTC

This package is auto-updated.

Last update: 2026-10-29 13:26:15 UTC


README

License build status coverage report

Contrôle de l'intégrité des fichiers (audio, vidéo, images, PDF, bureautique, archives, XML, JSON) selon leur format identifié par siegfried.

Dépendance de

ProjetBuildCoverage
asalaebuild statuscoverage report
asalae-corebuild statuscoverage report
file-convertersbuild statuscoverage report

Prérequis

  • PHP ^7.4 || ^8.1 avec les extensions dom, fileinfo, json
  • Outils système :
    • sf (siegfried) : identification du format (PUID PRONOM)
    • puis, selon le format :
      • audio, vidéo : ffmpeg et mediainfo
      • images : identify (paquet imagemagick)
      • PDF : pdfinfo (paquet poppler-utils)
      • bureautique : catdoc, xls2csv et catppt (paquet catdoc), xlsx2csv
      • XML : xmllint (paquet libxml2-utils)
      • archives : zip, gzip, bzip2, tar, rar

Installation

composer require libriciel/file-validator:dev-master

Utilisation

Utility

FileValidator\Utility\FileValidator::check($filename) identifie le format du fichier (PUID PRONOM via siegfried, à défaut extension et type mime) puis lance les contrôles associés à ce format ; le fichier est valide si l'un d'eux réussit.

  • config/validations.php : contrôles par PUID (fmt/…), chargés au démarrage ; loadConfig() permet d'en charger une autre
  • $allowNonFatalError (vrai par défaut) : tolère les erreurs non bloquantes
  • $displayErrors : affiche les erreurs rencontrées (débogage)

src/Worker/FileValidationWorker.php (asalae-core)

        $isValid = FileValidator::check($data['path']);
        $this->io->out(
            __(
                "Le test de validation du fichier {0} a été effectué. son résultat est : {1}",
                $data['name'],
            ($isValid ? 'valide': 'invalide')
            )

FileValidator\Utility\FileCorruptor : produit une version corrompue d'un fichier (lowLevelCorruption(), highLevelCorruption()), pour les tests.

tests/TestCase/FileCorruptorTest.php

        file_put_contents($filename, FileCorruptor::lowLevelCorruption($filename));

Tests

Les fichiers d'exemple viennent de file-validator-tests (require-dev).

vendor/bin/phpunit