J'ai un groupe de fichiers PDF qui ont été téléchargés à l'aide d'un grattoir. Ce grattoir n'a pas choisi de voir si le fichier était un JPG ou un PDF, par défaut, tous ont été téléchargés et enregistrés avec l'extension «.pdf». Donc, juste pour clarifier tous les fichiers du lot sont .pdf. Cependant, si j'essaie de les ouvrir (les fichiers qui ne sont pas pdf, mais plutôt des JPGS) via un serveur ou localement, je suis touché avec une erreur. P>
Ma question. Existe-t-il une manière avec PHP pour vérifier et voir si ce fichier est un PDF valide? Je voudrais exécuter toutes les URL à travers une boucle pour vérifier ces fichiers. Il y en a des centaines d'entre eux et cela prendrait des heures sur des heures à vérifier. P>
merci p>
4 Réponses :
pour les fichiers locaux (PHP 5.3 +): pour les fichiers distants: p>
Aucune sortie sur ce script et j'exécute une version PHP compatible.
Si le PDF a été téléchargé (comme vous l'avez mentionné) localement, le chemin est correct et Finfo code> est présent, cela devrait fonctionner.
@ Smack-A-bro: Vous n'obtenez aucune sortie sur les scripts de personne, vous faites donc quelque chose de mal. Tournez les erreurs déclarantes sur et voir quel est le problème.
Notez que l'exemple "Fichiers distants" ici est confiant aveuglément le serveur distant B> pour vous indiquer le type réel du fichier. Cela peut ou non être approprié en fonction du cas d'utilisation.
Utiliser FINFO_FILE () CODE> Fonction
<?php
if (function_exists('finfo_open')) {
$mime = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($mime, "FILE-PATH");
if($mime_type == "application/pdf")
echo "file is pdf";
else
echo "file is not pdf";
finfo_close($mime);
}
Parfois, vous devez vérifier une signature MIME d'un fichier et parfois d'une variable. Ce sont comment vous effectuez les deux vérifications:
$filename = '/path/to/my/file.pdf'; $content = file_get_contents($filename); $file_is_pdf = function(string $filename) : bool { return mime_content_type($filename) === 'application/pdf'; }; $var_is_pdf = function(string $content) : bool { $mime_type_found = (new \finfo(FILEINFO_MIME))->buffer($content); return $mime_type_found === 'application/pdf; charset=binary'; }; // Checks if a file contains a pdf signature. var_dump($file_is_pdf($filename)); // Checks if a variable contains a pdf signature. var_dump($var_is_pdf($content));
PDF commence par
"% pdf" code>
Cette question est un peu court sur l'information. Pouvez-vous partager ce que vous avez essayé et quels problèmes vous rencontrez?
Je n'ai rien essayé car toutes les recherches de Google me dirigent vers quelque chose qui est similaire mais pas ce dont j'ai besoin. J'ai l'impression que ma question résume ce dont j'ai besoin parfait. J'ai un tas de fichiers pdfs. Cependant, certains de ces PDF sont des JPGS qui sauvent accidentellement en PDF. J'ai besoin de comprendre lesquels sont ceux-là.
Vous dites "Je voudrais courir toutes les urls" i> - pouvez-vous élaborer à ce sujet? Edit: peu importe, Vous avez dit Ici . C'est tout un ballon différent. "Ce grattoir n'a pas choisi de voir si le fichier était un JPG ou un PDF" i> - Montrez-nous votre code actuel.