Question

Je prévois d'utiliser ce programme système / usr / bin / file pour déterminer le type de contenu du fichier téléchargé, puis agir en conséquence.

Est-ce une bonne idée ou y a-t-il des choses auxquelles je dois faire attention?(Ou utilisez quelque chose de complètement différent)

Était-ce utile?

La solution

PHP a l'extension fileinfo , qui utilise le même mécanisme maisest natif de PHP.

Autres conseils

mime_content_type et finfo_file sont les méthodes préférées pour déterminer un type mime (l'une ou l'autre est souvent activée dans la plupart des distributions php).Ils utilisent la même base de données magic.mime que l'outil externe, c'est pourquoi je ne l'utiliserais que comme solution de secours.

L'utilisation de l'outil externe nécessite également d'extraire le type mime de la sortie, donc cela implique un peu du code:

$type = exec("/usr/bin/file -iL " .escapeshellcmd($fn). " 2>/dev/null");
if ($type = trim(strtok(substr(strrchr($type, ":"), 1), ";"))) {
    return $type;
}

Si votre question porte sur la fiabilité: oui, c'est une bonne approche.La détermination du type de fichier par octets magiques est assez fiable sur tous les serveurs Linux / U * ix actuels.

Si vous pouvez utiliser une extension PECL (ou si vous utilisez php>= 5.3), je vous recommande d'utiliser le Extension Fileinfo .

Sinon, la fonction mime_content_type () fera l'affaire, mais veuillez noter qu'il est désormais obsolète (en faveur ou fileinfo)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top