get file content type

get file content type - PHP - Programmation

Marsh Posté le 23-07-2010 à 16:32:36    

Salut :)
 
c'est quoi la meilleur solution pour avoir le mime type d'un fichier de façon précice.
 
J'ai un proxy, en paramétre des url vers des .css, d'autres vers des .jpg, .js, .gif...
 
Je voudrais afficher à l'utilisateur le contenue convenablement.
 
J'ai utilisé finfo_file ça marche bien pour les images... Mais pour .css il me retourne text/plain
 
Un indice ? une fonction magic... ne me dite pas qu'il faut que je me code un switch qui pue pour  résoudre ce problème  :sarcastic:  
 
Merci

Reply

Marsh Posté le 23-07-2010 à 16:32:36   

Reply

Marsh Posté le 23-07-2010 à 16:45:36    

A défaut de faire mieux:

Code :
  1. $finfo = finfo_open(FILEINFO_MIME_TYPE);
  2. $mime_type = finfo_file($finfo, $file);
  3. finfo_close($finfo);
  4.  
  5. if ($mime_type == 'text/plain') {
  6.     $pathinfos = pathinfo($file);
  7.     $mime_type = 'text/'.$pathinfos['extension'];
  8. }
  9.  
  10.  
  11. header('Content-Type: '.$mime_type);


Reply

Marsh Posté le 23-07-2010 à 17:16:51    

ça va donner quoi pour du javascript ?

Reply

Marsh Posté le 23-07-2010 à 18:35:19    

doit y avoir des libs en PHP qui gèrent ça facilement


Message édité par Profil supprimé le 23-07-2010 à 18:35:35
Reply

Marsh Posté le 26-07-2010 à 10:18:45    

Ah ouais merde le JS :(... si vous avez une lib de dispo je veux bien :)


Message édité par xtof_83 le 26-07-2010 à 10:39:09
Reply

Marsh Posté le 26-07-2010 à 11:38:38    

Code :
  1. $mime_types = array(
  2.             'txt' => 'text/plain',
  3.             'htm' => 'text/html',
  4.             'html' => 'text/html',
  5.             'php' => 'text/html',
  6.             'css' => 'text/css',
  7.             'js' => 'application/javascript',
  8.             'json' => 'application/json',
  9.             'xml' => 'application/xml',
  10.             'swf' => 'application/x-shockwave-flash',
  11.             'flv' => 'video/x-flv',
  12.  
  13.             // images
  14.             'png' => 'image/png',
  15.             'jpe' => 'image/jpeg',
  16.             'jpeg' => 'image/jpeg',
  17.             'jpg' => 'image/jpeg',
  18.             'gif' => 'image/gif',
  19.             'bmp' => 'image/bmp',
  20.             'ico' => 'image/vnd.microsoft.icon',
  21.             'tiff' => 'image/tiff',
  22.             'tif' => 'image/tiff',
  23.             'svg' => 'image/svg+xml',
  24.             'svgz' => 'image/svg+xml',
  25.  
  26.             // archives
  27.             'zip' => 'application/zip',
  28.             'rar' => 'application/x-rar-compressed',
  29.             'exe' => 'application/x-msdownload',
  30.             'msi' => 'application/x-msdownload',
  31.             'cab' => 'application/vnd.ms-cab-compressed',
  32.  
  33.             // audio/video
  34.             'mp3' => 'audio/mpeg',
  35.             'qt' => 'video/quicktime',
  36.             'mov' => 'video/quicktime',
  37.  
  38.             // adobe
  39.             'pdf' => 'application/pdf',
  40.             'psd' => 'image/vnd.adobe.photoshop',
  41.             'ai' => 'application/postscript',
  42.             'eps' => 'application/postscript',
  43.             'ps' => 'application/postscript',
  44.  
  45.             // ms office
  46.             'doc' => 'application/msword',
  47.             'rtf' => 'application/rtf',
  48.             'xls' => 'application/vnd.ms-excel',
  49.             'ppt' => 'application/vnd.ms-powerpoint',
  50.  
  51.             // open office
  52.             'odt' => 'application/vnd.oasis.opendocument.text',
  53.             'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
  54.         );
  55.  
  56.         $infos = explode('.', $filename);
  57.         $ext = strtolower(array_pop($infos));
  58.         if (array_key_exists($ext, $mime_types)) {
  59.             return $mime_types[$ext];
  60.         }
  61.         elseif (function_exists('finfo_open')) {
  62.             $finfo = finfo_open(FILEINFO_MIME);
  63.             $mimetype = finfo_file($finfo, $filename);
  64.             finfo_close($finfo);
  65.             return $mimetype;
  66.         }
  67.         else {
  68.             return 'application/octet-stream';
  69.         }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed