Problème move_uploaded_file

Résolu/Fermé
Hurobaki Messages postés 53 Date d'inscription dimanche 23 mars 2014 Statut Membre Dernière intervention 10 mars 2017 - 27 avril 2015 à 15:29
Hurobaki Messages postés 53 Date d'inscription dimanche 23 mars 2014 Statut Membre Dernière intervention 10 mars 2017 - 27 avril 2015 à 16:34
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 :

$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 :)
A voir également:

3 réponses

jordane45 Messages postés 38154 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 652
27 avril 2015 à 16:23
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.

1
Hurobaki Messages postés 53 Date d'inscription dimanche 23 mars 2014 Statut Membre Dernière intervention 10 mars 2017
27 avril 2015 à 16:25
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
0
jordane45 Messages postés 38154 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 652
27 avril 2015 à 16:31
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é.
0
Hurobaki Messages postés 53 Date d'inscription dimanche 23 mars 2014 Statut Membre Dernière intervention 10 mars 2017
27 avril 2015 à 16:34
Donc autant que je gère le problème des accents et qu'ils n'aient pas à faire le travail de rename ...

Je comprends ton point de vue et tu as tout à fait raison, je vais donc m'y mettre :)
0