On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Bonjour.

    Quand j’upload dans ModX un fichier (avec le Gestionnaire de fichiers ou TinyMCE) dont le nom comporte des accents, les accents dans le nom du fichier sont convertis dans le système de fichier sur le serveur.

    ex. si je télécharge un fichier appelé "accentués.txt", sur le serveur il s’appelle "accentués.txt"

    Nota : dans le Gestionnaire de fichiers, le nom est correct

    Le problème est identique avec les versions 0.9.6.1, 0.9.6.2 et 0.9.6.3-RCx
    - Le serveur est sous MS Windows 2003 avec WampServer 2.0c / mySQL 5.0.45
    - ModX : encodage=Français-utf8, encodage des caractères Unicode UTF-8
    - dans le fichier ...manager/include/config.inc.php : $database_connection_charset = ’utf8’;
    - base mySQL en utf8_general_ci

    Quelqu’un a-t-il une explication/solution ?
    • Hello,

      On m’a toujours dit d’éviter d’utiliser des espaces ou des caractères accentués pour nommer mes fichiers. C’est la seule solution que j’utilise smiley
      • Perrine,

        merci pour ta réponse, mais le site est mis à jour dans l’interface d’administration par des utilisateurs (français) qui déposent leurs fichiers et je ne peux pas empêcher les noms avec accents.
        • Bonjour, en mettant en latin1, cela ne résoudrait pas le problème ?
          • Hello à tous.

            Je sais que ce topic date un peu mais au cas où vous en auriez marre comme moi de renommer les fichiers sur vos FTPs suite à un téléchargement de fichier avec accent, une petite modif permet d’y mettre fin.

            Pour cela :
            - ouvrir le fichier /manager/media/browser/mcpuk/connector/php/Commandes/FileUpload.php

            - Chercher (ligne 78)
            $filename=substr($filename,0,$lastdot);

            - Remplacer par
            $filename=$this->reallyCleanFileName(substr($filename,0,$lastdot));


            - Chercher
            }
            
            ?>


            - Remplacer par
            	function reallyCleanFileName ($str)
            	{
            		$str = strtr($str,"ÀÁÂÃÄÅàáâãäåÇçÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ,",
            		"AAAAAAaaaaaaCcOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNn_");
            	
            		$str = strtolower(trim ($str) ) ;
            		$str = preg_replace ('/[^a-z0-9\-\.,\*]/', '-', $str) ;
            		$str = preg_replace ('/([\-\.,\*]{2,})/ue', "substr('\\1', 0, 1)", $str) ;
            		$str = preg_replace ('/^[^a-z0-9]|[^a-z0-9]$/', '', $str ) ;
            		$str = str_replace('.','-',$str);
            		
            		return ($str) ;
            	}		
            	
            }
            
            ?>
            


            A partir de maintenant, les caractères interdits seront supprimés et les nouveaux fichiers renommés en minuscule grin
            La modif fonctionne sur Modx 0.9.6.x et modx evolution

            La fonction reallyCleanFileName n’est pas très belle, si quelqu’un se sent de l’optimiser c’est avec plaisir.

            En espérant que ça puisse aider smiley
            • Jean-Christophe B. Reply #6, 9 years, 6 months ago
              Merci Mildiou d’avoir partagé cette astuce.
              Ca devrait effectivement être bien utile: plus besoin de préciser aux clients de renommer impérativement les fichiers avant envoi sur le serveur. wink
                Intégrateur web freelance
              • Merci pour ce code ! J’ai très souvent ce problème avec mes utilisateurs.

                ps: je joins le fichier modifié avec ton code wink
                  CTRL+SHIFT+U - Clear Cache
                  CTRL+SHIFT+H - Hiding Heft Panel
                  CTRL+SHIFT+N - Fast Create Resource
                  CTRL+ALT+P - Preview Recource (in edit resorce window)
                  CTRL+ALT+S - Save
                • Super, ça marche, ça aidera bien en effet si des utilisateurs non avertis oublient de vérifier leurs noms de fichiers.
                  MAIS MAIS MAIS… il n’y aurait pas juste une petite erreur ? Chez moi, (Modx 1.0.4, tinyMCE 3.3.5.1)ça remplace tous les caractères accentués par un "a". Pas trop grave, mais bon.