IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur getimagesize avec fichier .JPG


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 98
    Points : 47
    Points
    47
    Par défaut Erreur getimagesize avec fichier .JPG
    Bonjour à tous,

    j'ai un formulaire pour uploader plusieurs fichiers en même temps... et j'ai remarqué que lorsque les fichiers sont au format ".jpg" je n'ai aucun problème ... par contre lorsque un fichier est au format ".JPG" (format issu d'un appareil photo) là plus rien ne fonctionne.

    j'utilise donc le code si dessous pour tester le nom du fichier à oploader et en extraire le type ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    		// On extrait les noms de fichiers
    		$fileNames 	= array_filter($_FILES['files']['name']); 
     
    		if(!empty($fileNames))
    		{ 
    			// Pour chaque fichier ...
    			foreach($_FILES['files']['name'] as $key=>$val)
    			{ 
    				$name =  $_FILES['files']['name'][$key];
                                    echo $name;
     
    				// ... on controle le type de fichier...
    				list($width, $height, $type, $attr) = getimagesize($_FILES['files']['tmp_name'][$key]);
     
                                    echo $type;
    	                        exit;
                            }
                    }
    avec un fichier ".jpg" cela fonctionne mais avec un fichier ".JPG" voici le résultat:

    echo $name renvoi bien le nom du fichier : DSCN5929.JPG

    mais getimagesize renvoie l'erreur suivante :
    Warning: getimagesize(): Filename cannot be empty in /home/dith1146/public_html/...etc

    je précise que j'ai fait un test en remplaçant l'extension du fichier "DSCN5929.JPG" par "DSCN5929.jpg" mais cela n'a rien résolu

    Quelqu'un aurait-il une idée ?

    Merci

  2. #2
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 781
    Points : 3 034
    Points
    3 034
    Par défaut
    Bonjour

    Si je comprends bien, exactement le même fichier est fonctionnel si jpg mais plus si JPG.

    Je n'ai pas d'expérience ici mais cela me fait songer à un potentiel souci de mimetype.

    Peux-tu tester ce lien et voir si tu as le bon type https://www.php.net/manual/en/functi...ntent-type.php
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 232
    Points : 1 798
    Points
    1 798
    Par défaut
    Pourquoi tmp_name et pas name dans ton appel pour déterminer la taille de l'image ??? il sort d'où ce tmp_name ?

    L'extension ne fait pas seul le type de fichier qu'il est et jpg est identique à JPG, ça reste du jpeg. Changer l'extension par renommage du fichier ne changera pas son contenu.

    Le message d'erreur indique que tu passes un nom de fichier vide à ta fonction, ce qui revient à ma question initiale: pourquoi utiliser tmp_name et à quoi il correspond?

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 885
    Points : 6 619
    Points
    6 619
    Par défaut
    Citation Envoyé par umfred Voir le message
    Pourquoi tmp_name et pas name dans ton appel pour déterminer la taille de l'image ??? il sort d'où ce tmp_name ?
    name est le nom original du fichier sur la machine cliente. tmp_name est quant à lui le nom de ce même fichier mais sur le serveur, il est renommé automatiquement par PHP lors de l'upload avec un nom temporaire (ce qui pare à tout problème de compatibilité ou d'encodage du nom avec le système de fichiers du serveur, ainsi qu'aux problèmes d'écrasements en cas d'upload multiple si des fichiers portent le même nom).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 885
    Points : 6 619
    Points
    6 619
    Par défaut
    Si je ne dis pas de bêtises, le format des photos provenant des cartes SD des appareils Nikon est particulier: chaque fichier est un container avec deux images: la photo dans un format brute (raw) et sa miniature, plus d'autres informations. Pour pouvoir les manipuler normalement il faut les convertir (donc extraire la photo). Le freeware dcraw permet de le faire, Il existe aussi le plugin UFRaw pour The Gimp qui s'appuie dessus.

    Tu peux aussi tenter ta chance avec l'extension PHP imagemagick qui pourrait gérer nativement certains formats propriétaires.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. erreur bioperl avec fichier FASTA
    Par karaudrey88 dans le forum Bioinformatique
    Réponses: 0
    Dernier message: 13/12/2012, 14h54
  2. erreur 403 avec fichier quizResult.log
    Par wagon2 dans le forum Apache
    Réponses: 1
    Dernier message: 30/10/2012, 21h40
  3. IMG_Load avec fichiers .jpg et png
    Par edgarjacobs dans le forum SDL
    Réponses: 4
    Dernier message: 01/03/2012, 00h54
  4. lien avec fichier .jpg
    Par edelweisseric dans le forum Flash
    Réponses: 10
    Dernier message: 22/05/2006, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo