Problème de récupération de type MIME - PHP - Programmation
Marsh Posté le 06-12-2004 à 01:45:41
Le problème c'est le navigateur du client.
C'est lui qui "décide" du type mime du fichier qu'il envoie et non PHP. Tu ne dois donc pas trop lui faire confiance.
Le problème en fait c'est que suivant le navigateur et l'image, le type mime peut changer. Et comme il n'y a pas vraiement de norme...
EN fait pour le JPEG je connais au moins 2 types:
image/jpeg
image/pjpeg
Le plus sûr, c'est encore de vérifier que le fichier reçu est bien une image jpeg : http://www.php.net/manual/fr/funct [...] getype.php
EDIT : Avec la lib GD, il y a aussi http://www.php.net/manual/fr/function.getimagesize.php qui donne plus d'infos, ce qui peut être interessant si tu veux par exemple limiter la taille des images...
Marsh Posté le 06-12-2004 à 02:13:17
Merci beaucoup Mara's dad pour ces précisions
Ah, rien de tel que les habitués pour obtenir de l'aide
Marsh Posté le 06-12-2004 à 02:54:44
Bon, je viens de tester...
voilà le code comme il est maintenant
Code :
|
J'ai testé ca avec qq1 chez qui ca ne marchait pas et c'est toujours pareil
J'ai aussi testé en mettant la ligne de test comme ceci :
Code :
|
Mais ça ne fonctionne pas non plus
Peut etre cela vient-il du fait que j'utilise $_FILES['fichier']['tmp_name'] : qu'en pensez-vous ?
Marsh Posté le 06-12-2004 à 09:00:08
J'ai testé ton code chez free et ça marche bien !
Si ça marche pas avec ton pote, c'est que le fichier n'est pas bon ou trop gros...
affiche la valeur de exif_imagetype($_FILES['fichier']['tmp_name']) et demande à ton pote ce qui se passe...
Exemple avec getimagesize :
<?php |
Avec un fichier jpeg, ça donne :
Début info image |
Avec un fichier qui n'est pas une image :
Début info image |
Marsh Posté le 06-12-2004 à 12:10:53
je parie que tu as simplement oublié ça ENCTYPE="multipart/form-data" dans la balise form de ton formulaire.. nan ?
Marsh Posté le 08-12-2004 à 01:11:40
Non non, ça, ça y est bien
Ca fonctionne pour la plupart des gens, sauf quelques rares cas
Mais apparemment c'est réglé en utilisant la fonction getimagesize() de Mara's Dad
Merci bcp
Marsh Posté le 08-12-2004 à 11:51:06
nero27 a écrit : |
De rien, m'enfin, faut pas dire que c'est MA fonction , l'auteur pourrait ne pas aprécier...
Par couriosité, t'as essayé d'afficher la valeur de exif_imagetype($_FILES['fichier']['tmp_name']) pour ceux chez qui ça marche pas ?
Marsh Posté le 09-12-2004 à 01:47:00
Mara's dad a écrit : Par couriosité, t'as essayé d'afficher la valeur de exif_imagetype($_FILES['fichier']['tmp_name']) pour ceux chez qui ça marche pas ? |
Oui, je l'ai fait, c'est aussi efficace que getimagesize()
Marsh Posté le 09-12-2004 à 12:08:26
Arf t'as pas compris la question, faut dire que j'étais pas clair du tout
Chez ceux qui avait un problème avec la méthode :
if( $_FILES['fichier']['type'] == "image/jpeg" )
et qui maintenant passent, quelle est donc la valeur de :
$_FILES['fichier']['type'] ?
Je parie sur "image/pjpeg" !
Me trompe-je ?
Marsh Posté le 09-12-2004 à 12:16:12
Mara's dad a écrit : |
sur IE seulement
p pour progressif
Que du régal ...
Marsh Posté le 09-12-2004 à 14:50:55
simogeo a écrit : sur IE seulement |
Oui je sais bien .
En même temps, c'est un peu normal d'avoir un type mime différent.
Y'a des softs incapable de lire les jpegs progressifs
Marsh Posté le 09-12-2004 à 15:05:32
Mara's dad a écrit : Oui je sais bien . |
suis d'accord avec ça.
Mais dans ce cas là, il faudrait normaliser tout ça
Marsh Posté le 09-12-2004 à 16:13:06
Tu te propose ?
Marsh Posté le 09-12-2004 à 16:14:03
Mara's dad a écrit : Tu te propose ? |
c'est pas vraiment ma place
Marsh Posté le 09-12-2004 à 16:46:22
Extrait de la rfc2046
A media type of "image" indicates that the body contains an image. |
Allons donc voir la rfc2048 ...
2.5. Location of Registered Media Type List |
Heu, pas très clair tout ça. On essaye la RFC1700?
image jpeg [RFC1521,NSB] |
Bof, un peu light tout ça, mais bon il semble que ce soit l'IANA qui soit chargé de gérer les type MIME...
Un petit tour chez IANA...
Yes, c'est mieux, mais pas de pjpeg
On le trouve chez kro$oft
Mais qui donc à pondu ce type ?
D'après ce site pjpeg est apparu avec IE4, et il semble que kro$oft ne se donne pas la peine de faire enregistrer les type MIME qu'il pond
Par exemple application/msword est enregistré, mais c'est pas kro$oft qui l'a fait.
En fait quand t'en a marre de te coltiner les types pondu pas kro$oft, la seule chose à faire est de demander l'enregistrement toi même
Chez bilou y z'en ont rien à péter des autres, de toute façon y utilisent que des softs propriétaires, donc pas de problème. Re
Marsh Posté le 09-12-2004 à 22:36:18
Mara's dad a écrit : Arf t'as pas compris la question, faut dire que j'étais pas clair du tout |
Ah, c'est vrai, j'avais pas pensé à faire ça, afficher son type mime
Mais le problème, c'est que la personne qui m'aidait était au canada et n'y connais pas grand chose en info
Marsh Posté le 17-12-2004 à 23:36:22
Bon, alors je rencontre encore quelques problèmes, mais c'est plus rare : pour tester, je m'envoie la valeur de $_FILES['fichier']['tmp_name'] par mail et lorsque je vais la voir, elle est vide
Qu'en pensez-vous ?
Marsh Posté le 17-12-2004 à 23:56:03
Je pense qu'on t'as rien envoyé
Que dit is_uploaded_file ?
Marsh Posté le 17-12-2004 à 23:58:53
Ah, je connaissais pas cette fonction : je vais tester avec ça
Mais comment se fait-il que la photo ne soit pas envoyée ?
Ca peut être du à quoi ? un firewall ?
EDIT : je l'utilise comment ? Comme ça is_uploaded_file($_FILES['fichier']['tmp_name']) ?
Marsh Posté le 18-12-2004 à 00:16:48
Moi, je l'utilise avec le name du <input type="file"...
Donc 'fichier' pour toi.
Pour une fois, la doc est mal foutue la dessus
Marsh Posté le 18-12-2004 à 00:35:54
Ok, je vais tester
C'est vrai que là, la doc est un peu faible
Mais bon, c'est quand même rare ici, pas comme sur nexen.net
Marsh Posté le 18-12-2004 à 01:22:09
Bon, j'ai testé et effectivement, le fichier n'est pas envoyé !
Qu'en pensez-vous ? un firewall qui bloquerait l'envoi du fichier ?
Apparemment, cette personne (peu calée en info) utilise le firewall d'XP et AVG comme antivirus.
Marsh Posté le 18-12-2004 à 01:26:24
C'est pas evident mais je bien essayer, attends
oué nan, j'ai jamais été doué pour les mimes
Marsh Posté le 05-12-2004 à 03:00:10
Voilà, j'ai fait un formulaire de téléchargement d'image au format Jpeg et lors du traitement du formulaire, je vérifies si le fichier est bien un .jpg comme ceci :
Lorsque j'utilise ceci sur le site de chez moi, ça fonctionne très bien, mais apparemment, chez certains utilisateurs, ça renvoie l'erreur même quand il s'agit bien d'un Jpeg
Savez-vous d'où cela peut-il venir ?
Pour info, j'héberge chez free.
Message édité par nero27 le 06-12-2004 à 00:26:31