Tom's Guide > Forum > Programmation > [PHP] Upload fichier - type mime

[PHP] Upload fichier - type mime

Forum Programmation : [PHP] Upload fichier - type mime

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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

Répondre à annjosephine
Tom's Guide > Forum > Programmation > [PHP] Upload fichier - type mime
Aller à :

Il y a 3271 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens