Recherche de fichiers par nom avec des caractères spéciaux.
Fermé
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
-
18 mai 2017 à 12:41
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 18 mai 2017 à 15:43
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 18 mai 2017 à 15:43
A voir également:
- Nom de fichier avec caractères spéciaux
- Caractères spéciaux clavier azerty - Guide
- Caractere speciaux - Guide
- Fichier rar - Guide
- Caractères ascii - Guide
- Caractères spéciaux mac - Guide
3 réponses
Felice_
Messages postés
265
Date d'inscription
mardi 25 avril 2017
Statut
Membre
Dernière intervention
20 juillet 2017
11
18 mai 2017 à 13:07
18 mai 2017 à 13:07
Bonjour patrice,
Peut-on voir ton code que tu as créé ?
Peut-on voir ton code que tu as créé ?
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
125
Modifié le 18 mai 2017 à 14:04
Modifié le 18 mai 2017 à 14:04
$fs = new Filesystem(); $search = array('é','è','°','ô'); $fileName = str_replace($search, '?',$row['fileName']); $fileName = str_replace('&', '&',$fileName); if ($fs->exists($fileSource)) { .... } else { dump('KO'); }
La ligne qui plante est celle de la condition du if.
- $row['fileName'] est le nom du fichier tel qu'il est enregistré dans la BDD MySql. En l'occurence, il est enregistré Art Mongolfières.doc
- $fileName contient le nom du fichier que $fs doit retrouver sur le serveur.
Sur le serveur, le dossier est affiché sous le nom Art Mongolfi?res.doc
A la base je pensais que le ? était dans le nom du fichier, d'où le fait que je fais des str_replace pour que $fileName contienne le même nom que celui afficher sur le serveur.
Mais maintenant je pense qu'il s'agit en fait d'une mauvaise lecture du serveur pour les noms de fichiers avec des accents et caractères spéciaux. Comme si il s'agissait d'une erreur d'encodage.
Pour information, je développe sous Symfony 3.2
Felice_
Messages postés
265
Date d'inscription
mardi 25 avril 2017
Statut
Membre
Dernière intervention
20 juillet 2017
11
18 mai 2017 à 15:04
18 mai 2017 à 15:04
Dans ton code je ne vois pas où est défini : $fileSource
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
125
18 mai 2017 à 15:43
18 mai 2017 à 15:43
il faut remplacer $fileSource par $fileName je me suis trompé ;)
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
18 mai 2017 à 14:13
18 mai 2017 à 14:13
Salut,
Si le problème d'affichage des caractères spéciaux de nom de fichier provient du logiciel que tu utilises pour consulter les fichiers du serveur, les fichiers sont donc correctement nommés sur le serveur et tu n'as donc pas besoin d'utiliser de str_replace.
Tu peux essayer d'afficher les fichiers du dossier via php pour voir s'ils sont correctement nommés du coté php. Par exemple :
Une solution alternative mais qui demande quelques modifications serait de renommer les fichiers lors de l'upload. On recommande en général d'éviter les espaces et les caractères spéciaux dans les noms de fichier pour le web et puisque tu utilises une bdd, tu pourrais conserver le nom original dans celle-ci si besoin.
Bonne journée,
Si le problème d'affichage des caractères spéciaux de nom de fichier provient du logiciel que tu utilises pour consulter les fichiers du serveur, les fichiers sont donc correctement nommés sur le serveur et tu n'as donc pas besoin d'utiliser de str_replace.
Tu peux essayer d'afficher les fichiers du dossier via php pour voir s'ils sont correctement nommés du coté php. Par exemple :
var_dump(glob('chemin/vers/le/dossier/*'));
Une solution alternative mais qui demande quelques modifications serait de renommer les fichiers lors de l'upload. On recommande en général d'éviter les espaces et les caractères spéciaux dans les noms de fichier pour le web et puisque tu utilises une bdd, tu pourrais conserver le nom original dans celle-ci si besoin.
Bonne journée,
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
125
Modifié le 18 mai 2017 à 15:01
Modifié le 18 mai 2017 à 15:01
Bonjour,
J'ai mis en place le str_replace car justement avec les accents il ne trouvait pas le fichier.
Concernant le renommage des fichiers lors de l'upload, il est pris en compte dans la nouvelle version du logiciel pour ne pas avoir ce genre de soucis. Là je suis sur l'ancienne version qui a cette erreur donc je ne dois faire avec malheureusement :/
Pour le glob, il n'affiche pas les fichiers avec des accents.
Il affiche un tableau vide tandis que pour les fichiers sans accents il affiche le nom sans soucis.
J'ai mis en place le str_replace car justement avec les accents il ne trouvait pas le fichier.
Concernant le renommage des fichiers lors de l'upload, il est pris en compte dans la nouvelle version du logiciel pour ne pas avoir ce genre de soucis. Là je suis sur l'ancienne version qui a cette erreur donc je ne dois faire avec malheureusement :/
Pour le glob, il n'affiche pas les fichiers avec des accents.
Il affiche un tableau vide tandis que pour les fichiers sans accents il affiche le nom sans soucis.
array(1) {
[0]=>
string(104) "/var/XXX/XXXX/cache/dev/../XXXX/Directory/XXXXX/13676_2_Coq Rico Moulin Rouge.png"
}
array(0) {
}