Récupérer le type d'un fichier (3 fonctions différentes)

Soyez le premier à donner votre avis sur cette source.

Vue 4 932 fois - Téléchargée 157 fois

Description

Bonjour à tous,

La plupart des gens pense que récupérer l'extension d'un fichier envoyé par formulaire (par exemple) est difficile à récupérer... Et vous ?

Je vous propose ici 3 fonctions différentes permettant de récupérer cette extension. Choisissez celle qui vous convient le mieux.

Source / Exemple :


<?php

/* 
----------------------------------------------------------------------
1ère méthode : l'utilisation de la fonction PHP explode : 
----------------------------------------------------------------------

  • /
function recupererType1($nom) { $morceau = explode('.', $nom); $longeur = sizeOf($morceau); return($morceau[$longeur-1]); } /* ---------------------------------------------------------------------- 2ème méthode : l'utilisation des fonctions substr et strrchr ----------------------------------------------------------------------
  • /
function recupererType2($nom) { $ext = substr(strtolower(strrchr(basename($nom), ".")), 1); return $ext; } /* ---------------------------------------------------------------------- 3ème méthode : l'utilisation de la fonction pathinfo ----------------------------------------------------------------------
  • /
function recupererType3($nom) { $resultat = pathinfo($nom, PATHINFO_EXTENSION); return($resultat); } /* ---------------------------------------------------------------------- Le code suivant teste les fonctions ci-dessus ----------------------------------------------------------------------
  • /
$nomFichier = 'bonjour.php'; echo('Le nom du fichier est : <b>'.$nomFichier.'</b> testons nos trois fonctions : <br />'); echo('<br />recupererType1 renvoie : '.recupererType1($nomFichier)); echo('<br />recupererType2 renvoie : '.recupererType2($nomFichier)); echo('<br />recupererType3 renvoie : '.recupererType3($nomFichier)); ?>

Conclusion :


Codez, mais codez propre :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Salut,

Pis se baser sur le point pour certains fichers cachés, c'est complètement vain : par exemple .htaccess On trouvera comme extension "htaccess" alors que c'est faux : il n'y a pas d'extension, le fichier s'appelle "htaccess" et il est caché, donc il commence par un point.
Idem avec pathinfo() et l'option PATHINFO_EXTENSION.
Finalement, toutes ces fonctions font toutes la même chose de la même manière. J'ai pas encore trouvé mieux qu'une expression régulière pour choper l'extension d'un fichier à coup sûr.
cyrilvincent
Messages postés
2
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 septembre 2009

En effet, merci de ta précision.
cs_MaX3315
Messages postés
170
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
11 mai 2009

Attention à autre chose encore : $_FILES['nomDuChampFile']['type'] donne le typemine envoyer par le navigateur client... donc par sécurité vaut mieux pas se fier à lui non plus.
cyrilvincent
Messages postés
2
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 septembre 2009

Se baser sur le point qui sépare l'extension est très improbable. Sous MAC par exemple l'extension n'est pas obligatoire (seul le nom est utile).
En outre la plus part du temps, vous avez besoin de connaitre l'extension lors d'un upload, et dans ce cas la fonction $_FILES['nomDuChampFile']['type'] vous donne les caractéristiques du fichier même sans extension dans le nom du fichier (on parle ici le type mime de l'objet).
Merci de le préciser dans vos remarques.
cs_MaX3315
Messages postés
170
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
11 mai 2009

Comme le dit Teclis01, ce script permet de récupérer l'extension du fichier ET sutout pas son type (mimetype).

C'est la porte ouverte aux attaques!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.