2016-07-07 1 views
0

Quel est le moyen le plus efficace pour déterminer l'extension d'un fichier enregistré, étant donné que je connais le nom uniquement et non l'extension?déterminer l'extension de fichier d'une image enregistrée (ou n'importe quel fichier)

types valides/extensions sont .jpg, .png et .gif

Par exemple, chaque élément a une image, de sorte que le nom de l'image sera item1.jpg or item1.png or item1.gif item2.jpg or item2.png or item2.gif etc.

La seule façon que je peux penser si loin est en boucle à travers les trois possibilités avec

if(file_exists('item1.jpg')) {... 
} elseif(file_exists('item1.png')) {... 
} elseif(file_exists('item1.gif')) {... 
} 

Y at-il un moyen plus efficace?

+0

oui, les éléments sont des articles pilotés par db donc/page/item23/aura une image associée img src = "/ images/item23.jpg". Je connais la partie "/ images/item23" mais il pourrait s'agir de l'un des trois types de fichiers. Je pourrais stocker le nom de l'image avec le contenu de l'article, mais je pense que cela peut être inutile. – vendo

Répondre

0

pour l'efficacité en termes de code moins, vous pourriez faire

$name = 'item23'; 
$images = glob("images/$name.???"); 
$image = $images ? $images[0] : ''; 

qui doit retourner le premier fichier correspondant à votre nom de fichier, quelle que soit l'extension dont il dispose, ou '' si aucun fichier correspondant n'est trouvé. I pense qui devrait également être plus efficace en termes de temps d'exécution que de vérifier file_exists trois fois. Dans mon opinion non sollicitée, je pense que stocker les chemins complets vers les images associées à vos articles n'est pas une mauvaise idée.

+0

Merci, c'est dans le sens de ce que je cherchais. Je ne sais pas si c'est la méthode la plus efficace, mais cela fonctionne :) En termes de stockage du nom de fichier complet, la plupart du temps, le type sera .jpg, donc je veux quelque chose pour gérer les exceptions plutôt que toutes les instances. Votre méthode semble être la meilleure solution. (Pensez aussi à stocker l'ext comme un minuscule int, par exemple 0 => 'jpg', 1 => 'png', 2 ​​=> 'gif'). Cordialement. – vendo

1

Essayez mime_content_type

Cela devrait vérifier le MIME du fichier et vous donner le type

+0

merci, mais pour ce faire, je voudrais d'abord connaître le nom du fichier + extension :) – vendo