Problème move_uploaded_file
Résolu
Hurobaki
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
Hurobaki Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
Hurobaki Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Mon problème n'est pas très compliqué mais je n'arrive pas à m'en défaire ...
Voilà j'upload une image avec des accents, mon script PHP fait en sorte que cette image soit stockée dans un dossier, bon tout ça marche nickel mais le soucis est que mon image perd ses accents ...

J'ai essayé plusieurs choses comme la fonction ut8_encode de PHP, à chaque fois que j'ai un soucis avec les accents c'est de la faute de l'encodage donc jme suis dit que ... Mais rien n'y fait !
Voici le code PHP :
j'ai comme vous le voyez mis des echo pour faire du débug, voici le résultat des echos :
png 4ème ranked !.PNG upload/4ème ranked !.png
Extension : png
Lorsque je fais un echo sur mon $targetPath il y a bien upload/4ème ranked ...
Alors pourquoi lorsque je regarde dans le dossier les accents ont disparu ?
De plus je stocke dans une Base de Données MySQL et je n'ai pas non plus ce problème ...
Ce n'est peut être pas très grave mais j'aimerai comprendre d'où ça vient !
Merci d'avance :)
Mon problème n'est pas très compliqué mais je n'arrive pas à m'en défaire ...
Voilà j'upload une image avec des accents, mon script PHP fait en sorte que cette image soit stockée dans un dossier, bon tout ça marche nickel mais le soucis est que mon image perd ses accents ...

J'ai essayé plusieurs choses comme la fonction ut8_encode de PHP, à chaque fois que j'ai un soucis avec les accents c'est de la faute de l'encodage donc jme suis dit que ... Mais rien n'y fait !
Voici le code PHP :
$img = $_FILES['file']; $validextensions = array("jpeg", ".jpg", ".png"); $temporary = strtolower(substr($img['name'], -4)); $extension = explode(".",$_FILES['file']['name']); $ext = end($extension); $extension = strtolower($ext); echo $extension; echo $img['name']; if($extension == 'jpeg') { $sourcePath = $_FILES['file']['tmp_name']; $targetPath = "upload/".(substr($img['name'],0,-5)).'.jpg'; echo $targetPath; } else { $sourcePath = $_FILES['file']['tmp_name']; $targetPath = "upload/".(substr($img['name'],0,-3)).$extension; echo $targetPath; } move_uploaded_file($sourcePath,$targetPath); echo "<br/>Extension : ".$extension;
j'ai comme vous le voyez mis des echo pour faire du débug, voici le résultat des echos :
png 4ème ranked !.PNG upload/4ème ranked !.png
Extension : png
Lorsque je fais un echo sur mon $targetPath il y a bien upload/4ème ranked ...
Alors pourquoi lorsque je regarde dans le dossier les accents ont disparu ?
De plus je stocke dans une Base de Données MySQL et je n'ai pas non plus ce problème ...
Ce n'est peut être pas très grave mais j'aimerai comprendre d'où ça vient !
Merci d'avance :)
3 réponses
Bonjour,
Utiliser des accents et/ou des epsaces ou autres caractères spéciaux dans des noms de fichiers est une très (très) mauvais habitude.
Ce que je te conseille :
Au momment de l'upload (et du move) sur le serveur.. tu renommes le fichier (à partir des fonctions uniqid() et microtime())
Dans ta BDD tu stockes : L'emplacement sur le serveur de ce fichier (avec son "nouveau nom" ) et dans un autre champ son nom "réel" avec les accents ..
et vouilou.. plus de soucis.
Utiliser des accents et/ou des epsaces ou autres caractères spéciaux dans des noms de fichiers est une très (très) mauvais habitude.
Ce que je te conseille :
Au momment de l'upload (et du move) sur le serveur.. tu renommes le fichier (à partir des fonctions uniqid() et microtime())
Dans ta BDD tu stockes : L'emplacement sur le serveur de ce fichier (avec son "nouveau nom" ) et dans un autre champ son nom "réel" avec les accents ..
et vouilou.. plus de soucis.
Bonjour,
Merci de ta réponse,
C'est pas vraiment une habitude que j'ai, j'ai mis en place ce système et j'avais une image qui traînait et j'ai voulu faire une série de test pour palier toutes possibilités et je me suis rendu compte que les accents provoquaient un problème.
Je vais faire comme tu m'as dit où alors empêcher les futurs utilisateurs de rentrer un fichier avec des accents !
Merci
Merci de ta réponse,
C'est pas vraiment une habitude que j'ai, j'ai mis en place ce système et j'avais une image qui traînait et j'ai voulu faire une série de test pour palier toutes possibilités et je me suis rendu compte que les accents provoquaient un problème.
Je vais faire comme tu m'as dit où alors empêcher les futurs utilisateurs de rentrer un fichier avec des accents !
Merci
e vais faire comme tu m'as dit où alors empêcher les futurs utilisateurs de rentrer un fichier avec des accents !
Le souci avec les utilisateurs... c'est que ce ne sont "que" des utilisateurs... et certains risquent de ne pas comprendre pourquoi tu empêches l'utilisation des accents....
Je pense que ma solution est la plus simple et la plus sûr...
Bien sûr tu pourrais également utiliser une REGEX pour remplacer automatiquement tous les caractères spéciaux (et/ou accentués) dans le nom du fichier lors de son enregistrement sur le serveur... mais de ce fait, tu n'afficherai plus le nom "exacte" du fichier que l'utilisateur aura uploadé.