Votre question

[PHP] Upload fichier - type mime

Tags :
  • Programmation
Dernière réponse : dans Programmation
4 Janvier 2006 15:32:39

Bonjour,

J'ai un petit problème pour la reconnaissance des types de fichiers word (.doc) que je veux uploader sur mon site
Voici une partie du code qui vérifie que le fichier est bien un fichier word

$type_file = $_FILES['fichier']['type'];
if(!strstr($type_file, 'application/msword'))
{
echo "Le fichier n'est pas un fichier word";
echo $type_file;
exit();
}

Quand je test le formulaire d'ajout avec internet explorer, ça fonctionne sans problème, il me reconnait bien que c'est un fichier word mais quand je le test avec firefox, le script ne reconnait pas le fichier word

Avec internet explorer il me retourne dans $type_file : application/msword
et avec firefox, il me retourne application/force-download

Merci de votre aide

Autres pages sur : php upload fichier type mime

31 Janvier 2007 13:50:48

bonjour,
j'ai eu le même prôblème que toi, mais avec des fichiers audio, ie me renvoyé correctement le type mime du fichier alors que firefox me renvoyé: application/force-download.

Pour firefox, j'ai donc fait une double vérification:
1) vérifier le type mime du fichier
2) Si le type ne correspond pas, je teste l'extension du fichier.

Voici le script:
//on recupere les valeurs du formulaire
$fichiermp=$_FILES['musique']['name'];

//on recupere l'extension du fichier
$decoup=explode('.',$fichiermp);
//attention count() enregistre à partir de 0 donc la derniere valeur est enregistré dans le tableau $decoup à count()-1
$extension=$decoup[(count($decoup)-1)];

//on recupere le type mime du fichier, et on enregistre dans un tableau les type mime acceptés
$file = $_FILES['musique']['type'];
$mime_types = array('audio/mpeg','audio/m4a','audio/x-ms-wma');

//si le mime du fichier n'est pas un mime enregistré on test l'extension
if (!in_array($file, $mime_types)){
if($extension=="mp3" OR $extension=="m4a" OR $extension=="wma"){
//execution de l'upload du fichier sur le serveur
}
else{
//on dit a l'utilisateur que sont fichier n'est pas un mp3
}
}
else{
//le type mime du fichier est reconnu, on fait l'upload
}


Note :
- à partir de la version 2.0 de firefox, le probleme disparait, le type mime est envoyé correctement.

- le test sur l'extension de fichier n'est pas fiable à 100%, voici les problemes rencontrés:
- pour les images, il faut préciser toutes les extensions possibles pour un même format (exemple: jpg jpeg JPG JPEG pour les fichier jpg)
- Sous mac, un fichier n'a pas forcement d'extension (un fichier mp3 sans extension sera quand meme lu dans Itune sous mac) donc les test d'extension ne marche pas même s'il s'agit d'un fichier audio.

J'espere que tout ca pourra t'aider!
AnnJosephine
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS