Partage
  • Partager sur Facebook
  • Partager sur Twitter

Upload des fichier sous le nom arabe ou accentué

php

    17 octobre 2018 à 17:26:11

    J'essaie de télécharger des fichiers dont le nom est arabe, par exemple (مرحبا بكم), mais lorsque je le télécharge sur le serveur, la chaîne n'est pas correcte et affiche des caractères tels que (Ø ± ÙŠÙ-Ù).

    Alors, comment puis-je télécharger des fichiers et conserver le nom arabe correct?

    mon code : 

    <form method="post" enctype="multipart/form-data">	
    			الموضوع<input type = "text" name = "sujet" required /></br>
    			التاريخ<input type = "date" name = "date_creation" /></br>
    			تحميل المذكرة<input type="file" class = "btn-link " name="files[]" multiple required /></br>
    			<input  type="submit"  class = "btn btn-primary" name="ajouter" value="ajouter"/>
    			<input  type="submit" class = "btn btn-primary" value="Annuler" name = "annuler"/>
    			
    			<?php
    				require'connexion_BD/connect.php';
    				header('content-type: text/html; charset=utf-8' );
    				if(isset($_POST['ajouter'])){
    					$sujet = mysql_real_escape_string(htmlspecialchars($_POST['sujet']));
    					$date_creation = $_POST['date_creation'];
    					$files = $_FILES['files'];
    					$nbr=0;
    					//$filename = $_FILES['files']['name'];
    					//(mb_detect_encoding($filename, 'UTF-8', true)) ? utf8_decode$filename : $filename;
    					$allowed = array('docx' , 'pdf', 'PDF','zip', 'txt', 'docx','pptx');				
    					if(!empty($files['name'][0])){
    						//((mb_detect_encoding($file_name, 'UTF-8', true)) ? utf8_decode$file_name) : $file_name;
    						foreach($files['name'] as $position => $file_name){
    							$file_tmp = $files['tmp_name'][$position];
    							$file_dest ='files/'.$file_name;
    							$file_ext = explode('.' , $file_name);
    							$file_ext = strtolower(end($file_ext));
    							if(in_array($file_ext , $allowed)){
    								if(move_uploaded_file($file_tmp, $file_dest)){
    									$req = $db->prepare('INSERT INTO tb_modakirat VALUES(?,?,?,?,?)');
    									$req->execute(array('',$file_dest, $file_name, $sujet, $date_creation));
    									$nbr++;
    								}
    								//echo "nbr = ".$count ;
    								header("Location:PageAdmin.php?nbr=$nbr");								
    							}
    							else{
    								
    								echo "</br>seul les fichier pdf et word (extension : pdf, docx) sont valable";
    							}
    						}
    					}
    					
    				}
    				if(isset($_POST['annuler'])){
    					header("Location:PageAdmin.php");
    				}
    			?>


    aidez-moi svp dans le plus court temps !!!

    -
    Edité par AbdessamadFaouzi 17 octobre 2018 à 17:27:05

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2018 à 17:35:16

      > la chaîne n'est pas correcte et affiche des caractères tels que (Ø ± ÙŠÙ-Ù).

      A quel niveau ? MySQL ? Système de fichiers ?

      Il y a ;charset=utf8 dans ton DSN au moins ?

      Si c'est le nom du fichier sur le disque/dans l'exploreur : pour PHP < 7.1 et sous Windows, c'est normal car de l'UTF-8 à ce niveau n'est pas pris en charge.

      Et vires ce mysql_real_escape_string et htmlspecialchars !

      Cela dit, pour un upload, c'est généralement préférable de générer un nom unique côté serveur.

      -
      Edité par julp 17 octobre 2018 à 17:39:03

      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2018 à 10:48:55

        j'ai les versions suivant :

        MySQL : 5.5.24

        PHP : 5.4.3

        Apache : 2.4.2

        et j'ai utiliser l'utf-8 a mon DSN voila le code de connexion :

        <?php
        	
        	try{
          $db =new PDO('mysql:host=localhost;dbname=bdd_modakirat;charset=utf8', 'root', '');
          //$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          //$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
        } catch(PDOException $e) {
            die('Erreur : ' . $e->getMessage());
        }
        	
        ?>
         

        les caractères (Ø ± ÙŠÙ-Ù)  sont afficher au fichier files dans mon serveur local wamp

        (>>>>Et vires ce mysql_real_escape_string et htmlspecialchars !

        >>>>Cela dit, pour un upload, c'est généralement préférable de générer un nom unique côté serveur) je ne Comprend pas ce que tu veux dire

        -
        Edité par AbdessamadFaouzi 18 octobre 2018 à 11:03:25

        • Partager sur Facebook
        • Partager sur Twitter
          18 octobre 2018 à 11:44:53

          > les caractères (Ø ± ÙŠÙ-Ù) sont afficher au fichier files dans mon serveur local wamp

          > Si c'est le nom du fichier sur le disque/dans l'exploreur : pour PHP < 7.1 et sous Windows, c'est normal car de l'UTF-8 à ce niveau n'est pas pris en charge.

          Si c'est une app destinée à tourner sous Windows et sous cette version (obsolète !!!) de PHP, tu dois, pour le move_uploded_file, convertir le chemin d'UTF-8 vers le jeu de caractères de Windows gérant l'arabe (CP125X ?).

          -
          Edité par julp 18 octobre 2018 à 11:45:11

          • Partager sur Facebook
          • Partager sur Twitter
            18 octobre 2018 à 12:35:55

            l'app va installer sur un serveur lunix et peut être aussi dans un serveur héberger mais je dois vérifier et confirmer que l'app sa marche de a à z sont avant de postée au serveur..

            comment convertir le chemin d'UTF-8 vers le jeu de caractères de Windows gérant l'arabe (CP125X ?) ??

            je veux voir un morceau de code svp

            • Partager sur Facebook
            • Partager sur Twitter
              18 octobre 2018 à 13:19:32

              > je veux voir un morceau de code svp

              Et puis quoi encore ? Tu nous prends pour des génies qui sortent de ta lampe pour accomplir tes moindres désirs ? C'est un forum d'entraide, pas d'assistanat/faites-moi mon travail. En plus, cette question, on l'a déjà traité donc tu as le droit de chercher un peu aussi !

              > comment convertir le chemin d'UTF-8 vers le jeu de caractères de Windows gérant l'arabe (CP125X ?) ??

              Tu as cherché au moins avant de poser la question ? Tu as le choix : iconv, mb_convert_encoding, classe UConvert.

              > confirmer que l'app sa marche de a à z sont avant de postée au serveur

              Tu as la solution de mettre à jour ta version de PHP aussi, mais je l'ai déjà dit. Sachant que sur système Unixoïde, tu n'auras pas ce problème. De toute façon, c'est pareil (vu que ça vient du client), rien ne te garantit non plus que tu auras de l'UTF-8 ...

              -
              Edité par julp 18 octobre 2018 à 13:23:42

              • Partager sur Facebook
              • Partager sur Twitter
                24 octobre 2018 à 10:44:55

                hh non M.Julp j'ai déjà chercher sur ce point et je trouve des solutions mais aucun de ces solutions réussit, pour cela je demande un morceau de code pour visualiser les étapes de conversion exact c'est seulement ça..et je m'excuse..

                le problème n'a pas encore résolut avec l'encodage mais je travaille maintenant avec un solution provisoire.. puisque le nom de fichier pas important pour moi je l'ai changé avec un nom valable(sans accent et sans arabe) avant de poster ce dernier au dossier (www>file) de mon serveur local.. et comme ça je éviter le problème..

                Merci Julp une autre fois (y)

                • Partager sur Facebook
                • Partager sur Twitter

                Upload des fichier sous le nom arabe ou accentué

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown