Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1451 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de récupération de type MIME

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de récupération de type MIME

n°914994
nero27
Posté le 05-12-2004 à 03:00:10  profilanswer
 

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 :

Code :
  1. if ($_FILES['fichier']['type'] == "image/jpeg" )
  2. {
  3.         //Création d'une vignette
  4. else {
  5. //Renvoi d'erreur de format de fichier
  6. }


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
mood
Publicité
Posté le 05-12-2004 à 03:00:10  profilanswer
 

n°915026
nero27
Posté le 05-12-2004 à 11:34:22  profilanswer
 

:bounce:

n°915379
nero27
Posté le 06-12-2004 à 00:00:17  profilanswer
 

UP

n°915418
Mara's dad
Yes I can !
Posté le 06-12-2004 à 01:45:41  profilanswer
 

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...


Message édité par Mara's dad le 06-12-2004 à 01:50:42

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°915422
nero27
Posté le 06-12-2004 à 02:13:17  profilanswer
 

Merci beaucoup Mara's dad pour ces précisions :jap:
 
Ah, rien de tel que les habitués pour obtenir de l'aide :)

n°915425
nero27
Posté le 06-12-2004 à 02:54:44  profilanswer
 

Bon, je viens de tester...
voilà le code comme il est maintenant

Code :
  1. if (exif_imagetype($_FILES['fichier']['tmp_name']) == 2)
  2. {
  3.     //Création d'une vignette
  4. else {
  5.     //Renvoi d'erreur de format de fichier
  6. }


 
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 :
  1. if (exif_imagetype($_FILES['fichier']['tmp_name']) == IMAGETYPE_JPEG)


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 ?


Message édité par nero27 le 06-12-2004 à 02:56:38
n°915441
Mara's dad
Yes I can !
Posté le 06-12-2004 à 09:00:08  profilanswer
 

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
echo( "<pre>Début info image\n" );
print_r( getimagesize($_FILES['fichier']['tmp_name']) );
echo( "Fin info image</pre>" );
?>
<BR>
<FORM ENCTYPE="multipart/form-data" ACTION="up.php" METHOD="POST">
<INPUT TYPE=hidden name="MAX_FILE_SIZE" value="204800">
Fichier à envoyer : <INPUT TYPE="FILE" name="fichier" size=80> (Max 200Ko)<BR>
<INPUT TYPE="submit" VALUE="Envoyer !">
</FORM>


 
Avec un fichier jpeg, ça donne :

Début info image
Array
(
    [0] => 200
    [1] => 15
    [2] => 2
    [3] => width="200" height="15"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)
Fin info image


 
Avec un fichier qui n'est pas une image :

Début info image
Fin info image


Message édité par Mara's dad le 06-12-2004 à 09:11:21

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°915596
titione
addicted
Posté le 06-12-2004 à 12:10:53  profilanswer
 

je parie que tu as simplement oublié ça ENCTYPE="multipart/form-data" dans la balise form de ton formulaire.. nan ?

n°917644
nero27
Posté le 08-12-2004 à 01:11:40  profilanswer
 

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 :jap:

n°917803
Mara's dad
Yes I can !
Posté le 08-12-2004 à 11:51:06  profilanswer
 

nero27 a écrit :


Mais apparemment c'est réglé en utilisant la fonction getimagesize() de Mara's Dad :)
Merci bcp :jap:


 
De rien, m'enfin, faut pas dire que c'est MA fonction :o, 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 ?


Message édité par Mara's dad le 08-12-2004 à 11:52:52

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
mood
Publicité
Posté le 08-12-2004 à 11:51:06  profilanswer
 

n°918530
nero27
Posté le 09-12-2004 à 01:47:00  profilanswer
 

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() ;)

n°918678
Mara's dad
Yes I can !
Posté le 09-12-2004 à 12:08:26  profilanswer
 

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 ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°918684
simogeo
j'ai jamais tué de chats, ...
Posté le 09-12-2004 à 12:16:12  profilanswer
 

Mara's dad a écrit :


Je parie sur "image/pjpeg" !
 
Me trompe-je ?


 
sur IE seulement [:itm]
p pour progressif  
Que du régal ...


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°918814
Mara's dad
Yes I can !
Posté le 09-12-2004 à 14:50:55  profilanswer
 

simogeo a écrit :

sur IE seulement [:itm]
p pour progressif  
Que du régal ...


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 :/


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°918832
simogeo
j'ai jamais tué de chats, ...
Posté le 09-12-2004 à 15:05:32  profilanswer
 

Mara's dad a écrit :

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 :/


 
suis d'accord avec ça.
Mais dans ce cas là, il faudrait normaliser tout ça [:spamafote]


Message édité par simogeo le 09-12-2004 à 15:05:39

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°918927
Mara's dad
Yes I can !
Posté le 09-12-2004 à 16:13:06  profilanswer
 

Tu te propose ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°918930
simogeo
j'ai jamais tué de chats, ...
Posté le 09-12-2004 à 16:14:03  profilanswer
 

Mara's dad a écrit :

Tu te propose ?


 
[:ddr555]
c'est pas vraiment ma place


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°918953
Mara's dad
Yes I can !
Posté le 09-12-2004 à 16:46:22  profilanswer
 

Extrait de la rfc2046
 

A media type of "image" indicates that the body contains an image.
   The subtype names the specific image format.  These names are not
   case sensitive. An initial subtype is "jpeg" for the JPEG format
   using JFIF encoding [JPEG].
 
   The list of "image" subtypes given here is neither exclusive nor
   exhaustive, and is expected to grow as more types are registered with
   IANA, as described in RFC 2048.
 
   Unrecognized subtypes of "image" should at a miniumum be treated as
   "application/octet-stream".  Implementations may optionally elect to
   pass subtypes of "image" that they do not specifically recognize to a
   secure and robust general-purpose image viewing application, if such
   an application is available.
 
   NOTE: Using of a generic-purpose image viewing application this way
   inherits the security problems of the most dangerous type supported
   by the application.


 
Allons donc voir la rfc2048 ...
 

2.5.  Location of Registered Media Type List
 
   Media type registrations will be posted in the anonymous FTP
   directory "ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/"
   and all registered media types will be listed in the periodically
   issued "Assigned Numbers" RFC [currently STD 2, RFC 1700].  The media
   type description and other supporting material may also be published
   as an Informational RFC by sending it to "rfc-editor@isi.edu" (please
   follow the instructions to RFC authors [RFC-1543]).


 
Heu, pas très clair tout ça. On essaye la RFC1700?
 

image           jpeg                                    [RFC1521,NSB]
                gif                                     [RFC1521,NSB]
                ief             Image Exchange Format       [RFC1314]
                tiff            Tag Image File Format           [MTR]


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 :fou:
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 :fou:


Message édité par Mara's dad le 09-12-2004 à 16:46:59

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°919270
nero27
Posté le 09-12-2004 à 22:36:18  profilanswer
 

Mara's dad a écrit :

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 ?


Ah, c'est vrai, j'avais pas pensé à faire ça, afficher son type mime :pt1cable:
Mais le problème, c'est que la personne qui m'aidait était au canada et n'y connais pas grand chose en info :/

n°926609
nero27
Posté le 17-12-2004 à 23:36:22  profilanswer
 

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 ?
 

n°926631
Mara's dad
Yes I can !
Posté le 17-12-2004 à 23:56:03  profilanswer
 

Je pense qu'on t'as rien envoyé :D
 
Que dit is_uploaded_file ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°926634
nero27
Posté le 17-12-2004 à 23:58:53  profilanswer
 

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']) ?


Message édité par nero27 le 18-12-2004 à 00:00:19
n°926640
Mara's dad
Yes I can !
Posté le 18-12-2004 à 00:16:48  profilanswer
 

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 :/


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°926661
nero27
Posté le 18-12-2004 à 00:35:54  profilanswer
 

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 [:ddr555]

n°926709
nero27
Posté le 18-12-2004 à 01:22:09  profilanswer
 

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.

n°926710
chrisbk
-
Posté le 18-12-2004 à 01:26:24  profilanswer
 

C'est pas evident mais je bien essayer, attends
 
 
http://jany.gilli.free.fr/hfr/kneudancer.gif
 
oué nan, j'ai jamais été doué pour les mimes :/

n°926714
nero27
Posté le 18-12-2004 à 01:30:01  profilanswer
 

[:nero27]  
 
 
 
 
 
 
 
 
 
 
 
:hello:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème de récupération de type MIME

 

Sujets relatifs
Probleme de xslfo + php[css] Problème de positionnement
Problème avec les Templates sous Visual ![PHP] Problème de POST
Problème de création de vignette !C++ : Problème de "commandes"
[CSS] Problème d'alignement d'un menu dans un divselect et socket enrobé de sucre (fdopen mode lecture) -> probleme ???
[Oracle - PL/SQL] Problème de trigger et de table inaccessibleErreur "Type de données incompatible dans l'expression du ..."[RESOLU]
Plus de sujets relatifs à : Problème de récupération de type MIME


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR