2009-07-03 7 views

Répondre

2

Vous pouvez utiliser le code suivant pour vérifier si le fichier est une image.

public bool IsFileAnImage(string filePath) 
{ 
    try 
    { 
     Image image = Image.FromFile(filePath)) 
    } 
    catch 
    { 
     return false; 
    } 
    finally 
    { 
     image.Dispose(); 
    } 

    return true; 
} 
-2

Une manière simple serait de regarder l'extension du fichier.

+1

Cela ne vous dit rien d'autre que l'extension, et c'est un moyen courant pour que les sites autorisent par erreur des exécutables à télécharger – NotMe

+1

J'ai dit "simple", par opposition à infaillible, mais je dirais que l'extension de fichier est utile même si vous ' Si un utilisateur renomme virus.exe en funpic.gif, alors l'extension est make une fausse promesse. Cependant, comme il prétend être un gif, nous pouvons alors tester spécifiquement si c'est vraiment le cas, le rejeter autrement. Sinon, nous devrons épuiser toutes les possibilités. –

+0

Je devrais probablement ajouter que renommer l'extension peut * rendre * un fichier dangereux inoffensif. Par exemple, un fichier '* .VBS' qui détruit le système de fichiers n'est qu'une lecture intéressante lorsqu'il est renommé en' * .TXT'. –

0

Cela peut être fait côté serveur avec GD en utilisant la fonction ci-dessous:. ((modified version of this)

function imageFileTypeFromBinary($file) 
{ 

    $binary = file_get_contents($file); 

    if (
     !preg_match(
      '/\A(?:(\xff\xd8\xff)|(GIF8[79]a)|(\x89PNG\x0d\x0a)|(BM)|(\x49\x49(\x2a\x00|\x00\x4a))|(FORM.{4}ILBM))/', 
      $binary, $hits 
     ) 
    ) { 
     return 'application/octet-stream'; 
      //return false; 

    } 
    static $type = array (
     1 => '.jpeg', 
     2 => '.gif', 
     3 => '.png', 
     4 => '.x-windows-bmp', 
     5 => '.tiff', 
     6 => '.x-ilbm', 
    ); 
    return $type[count($hits) - 1]; 
    // or simply return true 
    // return true; 
} 

si vous souhaitez, vous pouvez le faire revenir vrai, ou faux, par opposition au type mime

Questions connexes