J'essaie de déterminer le type mime d'un fichier. J'ai essayé quelques méthodes, mais je n'ai rien trouvé qui donne une sortie cohérente. J'ai essayé $mime = mime_content_type($file)
et $mime = exec('file -bi ' . $file)
. Je suis en train de diffuser des images, CSS et JavaScript.Détermination du type MIME d'un fichier local (type de contenu) Avec PHP
Exemple mime_content_type()
sortie:
- jquery.min.js - type text/plain
- editor.js - text/plain
- admin.css - text/plain
- controls.css - application/x-troff
- logo.png - text/plain
Exemple exec(...)
sortie:
- jquery.min.js - text/plain; charset = us-ascii
- editor.js - text/x-C++; charset = us-ascii
- admin.css - text/x-c; charset = us-ascii
- controls.css - text/x-c; charset = us-ascii
- logo.png - image/png
Comme on le voit ici, les résultats sont un peu partout.
Ma version PHP est 5.2.6
SOLUTION (grâce à Jacob)
$mimetypes = array(
'gif' => 'image/gif',
'png' => 'image/png',
'jpg' => 'image/jpg',
'css' => 'text/css',
'js' => 'text/javascript',
);
$path_parts = pathinfo($file);
if (array_key_exists($path_parts['extension'], $mimetypes)) {
$mime = $mimetypes[$path_parts['extension']];
} else {
$mime = 'application/octet-stream';
}
Vous avez dit que vous utilisiez 5.2.6, comment puis utilisez-vous 'fileinfo'? –
'pathinfo()' a été créé depuis PHP 4.0.3 - http://us.php.net/pathinfo – Sonny
mis à jour pour ajouter une solution, cela dit, la solution fournie est intrinsèquement non sécurisée car elle ne vérifie que les extensions de fichiers et ne devrait pas être utilisé sur les fichiers téléchargés pour vérifier la validité. – buggedcom