Partager
Affiche les résultats de 1 à 7 sur 7

Sujet : PHP : Uploader un dossier sur un serveur distant

  1. #1
    Inscrit
    décembre 2012
    Messages
    658
    Remerciements
    401
    Remercié(e) 223 fois dans 114 messages
    Pouvoir de réputation
    7

    PHP : Uploader un dossier sur un serveur distant

    Bonsoir,

    Mon but est de Uploader un répertoire à partir d'un poste client vers un serveur!! par la suite je pourrai accéder aux fichiers .

    J'ai procédé comme suit:

    1- J'utilise une procédure qui me permet de Uploader un dossier sur mon serveur mais à condition qu'il soit zippé et sa taille est acceptable aussi (c'est la même procédure de chargement de fichier)!!

    2- La décompression du dossier zippé sur le serveur (par la suite la suppression du fichier zippe parce que je n'aurais pas besoin).
    J'ai créé deux pages sur le serveur:

    1- Page index.php :
    Code PHP:
     <form enctype="multipart/form-data" action="upload.php" method="post">
          <
    input type="hidden" name="max_file_size" value="2000000" />
          
    Transfère le fichier <input type="file" name="myfile" />
          <
    input type="submit" />
        </
    form>
      </
    body
    2- Page upload.php :

    Code PHP:
    <html>
    <body>
    <?php
         $repertoireDestination 
    dirname(__FILE__)."/";
         
    $nomDestination $_FILES['myfile']['name'];
         
    $a=0;
         if (
    is_uploaded_file($_FILES["myfile"]["tmp_name"])) 
              {
                if (
    move_uploaded_file($_FILES["myfile"]["tmp_name"],$repertoireDestination.$nomDestination)) 
                   {
    $a=1;} 
              else {echo 
    "Le déplacement du fichier temporaire a échoué"." vérifiez l'existence du répertoire ".$repertoireDestination;}          
              } 
         else {echo 
    "Le fichier n'a pas été uploadé (trop gros ?)";}
         if (
    $a==1){
                    
    $zip = new RarArchive;//décompression du fichier
                    
    $zip->open($nomDestinationZipArchive::CREATE);
                    
    $zip->extractTo('./');
                    
    $zip->extractTo($repertoireDestination);    
                    
    $zip->close();
                    
    unlink($nomDestination);// suppression du fichier zippe*/
                     /// echo "Le fichier temporaire ".$_FILES["myfile"]["tmp_name"]." Le fichier a été décompressé et déplacé vers ".$repertoireDestination.$nomDestination;
                  
    }    
    ?>
    </body>
    </html>
    Il y a aussi Unzipper.zip qui permet la décompression des fichiers zippés

    Je veux savoir est ce qu'il y a une procédure qui me permet de uploader un dossier sur le serveur mais sans qu'il ne soit zippé!!!

    Merci de me porter votre aide
    Dernière édition par sabrina206; 15/03/2013 à 20h32 Raison: il y avait une erreur sur la dernière procédure

  2. Les membres suivants ont remercié sabrina206 pour cet excellent message :


  3. # ADS
    Inscrit
    Toujours
    Messages
    Plusieurs






     
  4. #2
    Inscrit
    septembre 2010
    Messages
    262
    Remerciements
    2
    Remercié(e) 131 fois dans 79 messages
    Pouvoir de réputation
    9

    Re : PHP : Uploader un dossier sur un serveur distant

    Salam alikoum,

    A ma connaissance non et ce n'est pas une limitation de PHP mais des navigateurs qui permettent de sélectionner un seul fichier par formulaire d'upload.

  5. Les membres suivants ont remercié NumberOne pour cet excellent message :


  6. #3
    Inscrit
    juin 2011
    Messages
    345
    Remerciements
    1
    Remercié(e) 251 fois dans 150 messages
    Pouvoir de réputation
    9

    Re : PHP : Uploader un dossier sur un serveur distant

    C'est imaginable en se basant sur le protocole WebDAV, avec les progrès apportés par HTML5 cela devrait être faisable en application full-web.
    Site personnel : www.blueicefield.com

  7. Les membres suivants ont remercié blueicefield pour cet excellent message :


  8. #4
    Inscrit
    décembre 2012
    Messages
    658
    Remerciements
    401
    Remercié(e) 223 fois dans 114 messages
    Pouvoir de réputation
    7

    Re : PHP : Uploader un dossier sur un serveur distant

    Bonsoir tous le monde,

    @NumberOne&blueicefield Merciiii

    J'ai voulu maintenir l'idée de compresser un fichier en local (poste client) avant de l'envoyer sur le serveur.

    1-Selectionner du dossier(poste client)
    2-Le compresser (poste client)
    3-l'envoyer sur le serveur (déjà donner)
    4-le décompresser sur serveur (déjà donner)

    l'étape 3 :

    Code PHP:
    <html>
    <head>
    <title>compresseur</title>
    </head>
    <body>
    <?php
    include_once('pclzip.lib.php');//télécharger à partir de http://www.phpconcept.net/pclzip/pclzip-downloads
    $v_list $archive->create('../');
    if (
    $v_list == 0) {
    die(
    "Error : ".$archive->errorInfo(true));
    }
    else {
    echo 
    "ok: <a href='./save.zip'>save.zip</a>";
    }
    ?>
    </body>
    </html>
    Ce que j'ai voulu faire en réalité c'est la reprise du développement de cette procédure qui j'ai trouvé en VBA en langage web (javascript..).

    voilà la macro je l'ai testé en Excel elle fonctionne parfaitement
    Code:
    Sub choix_dossier()
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H210&, "C:\")
        On Error Resume Next
        Set oFolderItem = objFolder.Items.Item
        chemin = oFolderItem.Path
     
        Range("A1").Value = chemin
    End Sub
    J'ai fait ça (1)

    Code HTML:
    <script>
    function RepertoireChoix()
    {
      var oShell = new ActiveXObject("shell.application");
     var destination = oShell.BrowseForFolder(0,"choix du répertoire", 0x0001+0x0002,0);
     if (destination==null) { destination=""; }
     else {
    return(oShell.BrowseForFolder(0,"choix du répertoire", 0x0001+0x0002,0).item().item().path);
    }
    }
    </script>
    <body>
    	<input type="button" onclick="RepertoireChoix()" >
    </body>
    ou bien 2)

    Code HTML:
    <SCRIPT LANGUAGE="JScript">
    <!--
        function RepertoireChoix()    
        {
            var oShell = new ActiveXObject("shell.application");
            return(oShell.BrowseForFolder(0,"choix du répertoire", 0x0001+0x0002,0).item().item().path);
        }
    -->
    </SCRIPT>
    <input type="button" onclick="RepertoireChoix()">
    Il m'a fallu du temps pour découvrir : La procédure (1) (ou bien (2)) doit être enregistrée avec l’extension .hta en plus de ça elle fonctionne seulement sur IE .

    à suivre ..........

  9. Les membres suivants ont remercié sabrina206 pour cet excellent message :


  10. #5
    Inscrit
    mars 2013
    Messages
    5
    Remerciements
    1
    Remercié(e) 3 fois dans 2 messages
    Pouvoir de réputation
    0

    Re : PHP : Uploader un dossier sur un serveur distant

    vous pouvez utilise html5 multiupload tag, utilise CTRL pour select multipe files

    multiple="multiple"

    Code HTML:
    <form method="post" enctype="multipart/form-data">
    Multiupload , use CTRL to select multipe files : <br>
    <input type="file" name="files" multiple="multiple">
    <br>
    <input type="submit" name="upload" value="upload">
    </form>

  11. [Les 2 membres suivants remercient Nassim0x09 pour cet excellent message :


  12. #6
    Inscrit
    décembre 2012
    Messages
    658
    Remerciements
    401
    Remercié(e) 223 fois dans 114 messages
    Pouvoir de réputation
    7

    Re : PHP : Uploader un dossier sur un serveur distant

    Bonsoir,

    Merci Nassim pour la procédure elle est très intéressante . J'ai voulu avoir une fenêtre pop (comme l'exemple de VBA) qui liste les dossiers (sur poste client).

    je l'ai testé avec .hta ça marche à moins que c'est le seule cas où ça fonction .

  13. #7
    Inscrit
    décembre 2012
    Messages
    658
    Remerciements
    401
    Remercié(e) 223 fois dans 114 messages
    Pouvoir de réputation
    7

    Re : PHP : Uploader un dossier sur un serveur distant

    Bonsoir c'est encore moi ;

    Enfin hmd j'ai réussit à porter des modifications sur mes procédure pour le transfert du contenue d'un dossier (fichiers) à un serveur distant.

    1- Page index.php :

    Code PHP:
    <html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <
    script type="text/javascript">

    function 
    drop() 
    {
            var 
    fichiers document.getElementById('fileinput').files;
            
    // nombre de fichiers
            
    document.getElementById('nbfic').innerHTML fichiers.length;
            
    document.getElementById('nbrfichier').value fichiers.length;        
            
    // liste des noms de fichiers
            /*var listefiles = '';
            for(var j=0;j<fichiers.length;j++){
                listefiles += fichiers[j].name+"<br />\n";
            }
            document.getElementById('listefiles').innerHTML = listefiles;
            */
            
    for(var j=0;j<fichiers.length;j++){
                var 
    listefiles1 document.getElementById("listefiles").insertRow(-1);
                 var 
    x1;
                
    listefiles1.insertCell(0)
                
    x1 document.createTextNode(fichiers[j].name)
                
    listefiles1.cells[0].appendChild(x1);   
               }
            var 
    listefiles1 = new Array();   
            for(var 
    j=0;j<fichiers.length;j++){
                
    listefiles1[j] =j;//fichiers[j].name;
            
    }
            
    document.getElementById('listefiles1').value listefiles1;

            
    ///Tableau des fichiers : size - name - type
            
    for(var j=0;j<fichiers.length;j++)
               {
                var 
    tbrow document.getElementById("tabs").insertRow(-1)
                var 
    zozo1;
                
    ///zlien[index] = new Array;
                
    tbrow.insertCell(0)
                
    zozo1 document.createTextNode(fichiers[j].size)
                
    tbrow.cells[0].appendChild(zozo1);   
               
                
    tbrow.insertCell(1)
                
    zozo2 document.createTextNode(fichiers[j].name)
                
    tbrow.cells[1].appendChild(zozo2);   
               
                
    tbrow.insertCell(2)
                
    zozo3 document.createTextNode(fichiers[j].type)
                
    tbrow.cells[2].appendChild(zozo3);       
               
                
    tbrow.insertCell(3)
                var 
    construction=document.createElement('input');
                
    construction.type="button";
                
    construction.value="Supprimer";
                
    construction.onclick=function(){supprLigne(this.parentNode.parentNode);};           
                
    tbrow.cells[3].appendChild(construction);
               }
    };
    function 
    supprLigne(line){
        
    document.getElementById('nbfic').innerHTML = (document.getElementById('nbfic').innerHTML-1);
        var 
    document.getElementById('fileinput').files;
        
    a=line.rowIndex-1;
        var 
    chaine document.getElementById("listefiles1").value;
    //    sousou=sab.replace(",1","");//str_replace($letters, $fruit, $text); en php
    //    sousou=sab.substring(0, n) + sab.substring(n + 1, sab.length);
        
    chaine chaine.split(",");
         if (
    a==(chaine.length-1)){chaine.pop();}
                else {if (
    a==0){chaine.shift();}
                       else {
    chaine.splice(a,1)};
                   }
        
    document.getElementById("listefiles1").value=chaine;       
        
    line.parentNode.removeChild(line);
        var 
    p2 document.getElementById('listefiles').rows[a];
        
    p2.parentNode.removeChild(p2);     
    }
    </script>
    <style type="text/css">
    .box{
         position:absolute;
         background-color:gray;
         height:200px;width:250px;
         margin-top:120px;
         margin-left:600px;
         border:1px ridge #aaa;
         -moz-box-shadow: 10px 10px 10px #212121;
         -webkit-box-shadow: 10px 10px 10px #212121;
         box-shadow: 10px 10px 10px #616161;
        }
     
    .tables td img, video{
         width:8em;
       }
     
    .tables {
        font-family:arial;
        background-color: #CDCDCD;
        margin:10px 0pt 15px;
        font-size: 8pt;
        width: 50%;
        text-align: left;
    }
    .tables thead tr th, table.tablesorter tfoot tr th {
        border: 1px solid #FFF;
    }
    .tables tbody tr {
        color: #3D3D3D;
        padding: 4px;
        background-color: #FFF;
        vertical-align: top;
    }
    </style>
    </head>
    <body>
    <!--div id='dropbox' class='box' ondragenter="this.textContent = ''; dragenter(event)" ondragover="dragenter(event)" ondrop="dragenter(event); drop(event);"></div-->
    <div>
    <form method="post" enctype="multipart/form-data" action="upload.php">
    Nom du dossier à proposer : <input type="text" name="nom" value="">
    <br><br>
    <input type="file" id="fileinput" multiple="multiple" onChange="drop()" name="myfile[]">
    <input name="val" id="nbrfichier" value="" type="hidden">
    <input id="listefiles1" name='listefiles1' type='hidden' value=".implode(“,”, $listefiles1).">
    <input type="submit" name="upload" value="upload" >

    </form>
    </div>
    Nombre de fichiers : <label id="nbfic"></label><br>
    <table>
    <thead>
    <tr>
    <th><div align="left">Noms des fichiers</div></th>
    </tr>
    </thead>
        <tbody id="listefiles">
        </tbody>
    </table>
    <!--p id="listefiles"></p-->
    <table class="tables" ondragenter="dragenter(event)" ondragover="dragenter(event)" ondrop="dragenter(event); drop(event);">
    <thead>
    <tr>
        <th>Taille du fichier</th>
        <th>Nom du fichier</th>
        <th>Type du fichier</th>
        <th>Supprimer</th>
        </tr>
    </thead>
        <tbody id="tabs">
        </tbody>
    </table>
    </body>
    </html> 
    Remarque : La page index.php permet de

    - Donner un nom du dossier sur le serveur où on va mettre les fichiers transferts.
    - Sélectionner un certain nombre de fichiers.
    - Dé-sélectionner des fichiers de la liste des fichiers à uploader.

    2- Page upload.php :

    Code PHP:
    <?
    $nom
    =$_POST['nom'];
    if (!
    is_dir($nom)){
    mkdir ($nom,0777,true);//function r_mkdir($path, $mode = 0777, $recursive = true)

    $req=explode(",",$_POST['listefiles1']);//récupération du mon vecteur
    //echo $tableau_1[0];//la première valeur
    $a=$_POST['val'];//nombre de fichier sur file
    $b=count($req);//Taille du vecteur
    if ($b>0)
    {
    for(
    $i=0;$i<$b;$i++)
       {
          
    $repertoireDestination dirname(__FILE__)."/".$nom."/";
          
    $nomDestination $_FILES['myfile']['name'][$req[$i]];
          if (
    is_uploaded_file($_FILES["myfile"]["tmp_name"][$i])) 
               {
                 if (
    move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$repertoireDestination.$nomDestination)) 
                    {
    $c=1;} 
                 else {echo 
    "Le déplacement du fichier temporaire a échoué"." vérifiez l'existence du répertoire ".$repertoireDestination;}          
              } 
           else {echo 
    "Le fichier n'a pas été uploadé (trop gros ?)";}
        }
    }
    ?>
    Remarque : La page upload.php permet de

    - La création du dossier de récupération de fichiers (s'il n'existe pas).
    - Uploader les fichiers sur le serveur.

    Voilà voilà c'est terminé j'espère que cela puisse servir à quelqu'un d'autre

  14. Les membres suivants ont remercié sabrina206 pour cet excellent message :


Sujets similaires

  1. Dossier : virtualisation de réseau, la prochaine étape dans les datacenters
    Par DZGeek Bot dans le forum Actualité informatique et high tech
    Réponses: 0
    Dernier message: 05/02/2013, 08h40
  2. Le dossier Djezzy enfin classé ?
    Par Essedik dans le forum Djezzy
    Réponses: 2
    Dernier message: 12/12/2012, 20h14
  3. La 3G sera lancée après le règlement du dossier Djezzy
    Par Milax dans le forum Opérateurs mobile
    Réponses: 7
    Dernier message: 20/10/2012, 11h21
  4. Dossier : Les erreurs a ne pas faire lors de la conception d'un logo
    Par TeamWorK dans le forum Discussions Libres
    Réponses: 0
    Dernier message: 25/07/2012, 16h19

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas modifier vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé



Liens annexes