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 :

[Upload] move_uploaded_file() et nom de répertoire avec espaces


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut [Upload] move_uploaded_file() et nom de répertoire avec espaces
    bonjour,

    je souhaite savoir s'il est possible de manier des fichiers sur des répertoires dont les noms contiennent des caractères spéciaux comme les accents et surtout les espaces :

    c'est pour une galerie photo, et chaque répertoire correspond à un album, donc le nom du rep est le nom de l'album, et bien sûr, c'est bien qd ya tous les caractères.
    ça marche très bien pour la visualisation et la navigation, car j'utilise les urlencode(), ça marche également pour le traitement des images, qd je veux les redimensionner ou créer des thb, etc...

    mais ça ne marche pas pour l'upload avec la fonction move_uploaded_file().
    c'est rédhibitoire? ya une solution pour contourner ce problème?

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Points : 102
    Points
    102
    Par défaut
    tu devrais pê utiliser une autre technique pour nommer tes repertoires, une table qui fait le lien entre le nom de la galerie et un numéro unique que tu geres toi pour nommer les répertoires

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    je souhaitais justement éviter une base sql...
    mais bon, si ya pas de solutions, j'me taperai des "_", ça fait pas classe comme nom de rep qui apparait.

  4. #4
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut fred, le problème est que les serveurs sont souvent unix et donc n'aiment pas les espaces et les accents...
    Tu cree donc tes répertoires avec _ mais à l'affichage, tu peux les transformer avec deux petites fonctions

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    function stringToLinuxString($string)
    {
    	$res = str_replace(" ", "_", $string);
    	$res = str_replace("é", "eaigu", $res);
    	$res= str_replace("è", "egrave", $res);
    	$res= str_replace("ë", "etrema", $res);	
    	$res= str_replace("à", "agrave", $res);
    	$res= str_replace("ê", "ecirc", $res);
    	$res= str_replace("â", "acirc", $res);
    	$res= str_replace("î", "icirc", $res);
    	$res= str_replace("ï", "itrema", $res);
    	$res= str_replace("û", "ucirc", $res);
     
    	return $res;
    }
     
    function linuxStringToString($string)
    {
    	$res = str_replace("_", " ", $string);
    	$res = str_replace("eaigu", "é", $res);
    	$res= str_replace("egrave", "è", $res);
    	$res= str_replace("etrema", "ë", $res);	
    	$res= str_replace("agrave", "à", $res);
    	$res= str_replace("ecirc", "ê", $res);
    	$res= str_replace("acirc", "â", $res);
    	$res= str_replace("icirc", "î", $res);
    	$res= str_replace("itrema", "ï", $res);
    	$res= str_replace("ucirc", "û", $res);
     
    	return $res;
    }
    Ainsi, dans tes répertoires sur le serveur apparaitrons les trucs bizarres style "eaigu" mais à l'affichage, tu verras un "é"


    Espérant t'avoir aidé

    A+
    JC

  5. #5
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par jc_cornic Voir le message
    Salut fred, le problème est que les serveurs sont souvent unix et donc n'aiment pas les espaces et les accents...
    Bonjour,

    A ma connaissance, les serveurs *nix supportent très bien les espaces et accents. Mais c'est assurément à fuir pour éviter les problèmes d'encodage...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    c'est bien aussi une histoire de jeux de caractères.
    il faut donc jongler avec les utf8_encode() pour y arriver;

    ouais, c'est super délicat car forcément entre le local et le distant, c'est jamais les mêmes configs...
    galère galère

Discussions similaires

  1. Nom de dossier avec espace
    Par cincap dans le forum Débuter
    Réponses: 5
    Dernier message: 19/11/2007, 14h59
  2. Nom de fichier avec espaces
    Par GLDavid dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 07/05/2007, 09h38
  3. [système]shell + Nom de fichier avec Espace
    Par delphine_lep dans le forum Access
    Réponses: 3
    Dernier message: 23/03/2007, 16h24
  4. Réponses: 11
    Dernier message: 25/04/2006, 09h33
  5. Réponses: 2
    Dernier message: 08/07/2005, 10h40

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