2010-09-12 5 views
2

J'écris un script et je dois correctement (je pense que certains types mime peuvent être différents de leurs extensions) obtenir les types de fichiers mime (les fichiers peuvent être de n'importe quel type) .Comment puis-je obtenir le type mime en PHP

Société d'hébergement Web en cours d'utilisation n'a pas mime_content_type() et est toujours (ne sait pas quelle année ils vont le réparer) promettant de réparer l'alternative PECL.

De quel autre moyen puis-je m'y prendre (et je n'ai pas accès aux commandes shell)?

+0

Il est temps de changer de fournisseur d'hébergement. – shamittomar

Répondre

2

utiliser la fonction suivante, qui est une enveloppe pour les 3 méthodes les plus courantes:

function Mime($path, $magic = null) 
{ 
    $path = realpath($path); 

    if ($path !== false) 
    { 
     if (function_exists('finfo_open') === true) 
     { 
      $finfo = finfo_open(FILEINFO_MIME_TYPE, $magic); 

      if (is_resource($finfo) === true) 
      { 
       $result = finfo_file($finfo, $path); 
      } 

      finfo_close($finfo); 
     } 

     else if (function_exists('mime_content_type') === true) 
     { 
      $result = mime_content_type($path); 
     } 

     else if (function_exists('exif_imagetype') === true) 
     { 
      $result = image_type_to_mime_type(exif_imagetype($path)); 
     } 

     return preg_replace('~^(.+);.+$~', '$1', $result); 
    } 

    return false; 
} 
2

$ _FILES [ 'fichier'] [ 'type'] vient du navigateur télécharge le fichier afin que vous ne puissiez pas compter sur cette valeur du tout.

Extrayez le finfo_file pour identifier les types de fichiers en fonction du contenu du fichier. L'extension du fichier est également peu fiable car l'utilisateur pourrait télécharger du code malveillant avec une extension mp3.