Copier coller d'un répertoire

Signaler
Messages postés
1132
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 mars 2020
-
Messages postés
1132
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 mars 2020
-
Bonjour,

Je suis occupé à créér un script qui grace un un form va créer le repertoire voulu par l'utilisateur et ensuite copier le contenu d'un répertoire dans ce fameux répertoire de l'utilisateur.

J'ai un form on rentre Burnside il me crée bien le repertoire Burnside, le problème c'est la copie des fichiers d'un repertoire vers ce répertoire...

J'utilise ce script : http://www.phpcs.com/codes/COPIER-REPERTOIRE-TOUT-QU-CONTIENT_33553.aspx
et à la fin il demande deux repertoires 
copier_rep ($repertoire, 'source');

Mon souhait n'est pas de copier le répertoire source dans burnside mais uniquement les repertoires et fichiers contenenu dans source.

./Source/admin/
./Source/sql.txt

./Burnside/Source/admin/
./Burnside/Source/sql.txt

je souhaite :
./Burnside/admin
./Burnside/sql.tx

Que dois-je modifier?

Bàv,
Burnside.
..:: Enjoy living in hell ::..
http://www.art-line.be

2 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

fais voir ton code. C'est juste un problème de chemin.
Messages postés
1132
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 mars 2020
1
function MakeDir($dir)
      {
      // On vérifie qu'il y ait bien un dossier      if (($dir '') or ($dir '/') or (is_dir($dir))) {
      return 0;
      }
      // Si c'est un dossier simple on le crée
      if (strrpos($dir, '/') == false) {
      mkdir($dir);
      return 0;
      }
      $pos_ini = 0;
      $dir_depart = '';
      while($dir) {
      // Trouve le dossier au début de $dir
      $dossier = '';
      $pos_ini = 0;
      $t = $pos_ini;
      while((strrpos($dossier, '/') == false) and ($t <= strlen($dir))) {
      $t += 1;
      $dossier = substr($dir, $pos_ini, $t);
      }
      if (!is_dir($dir_depart . $dossier)) {
      mkdir($dir_depart . $dossier);
      }
      $dir = substr($dir, $t, strlen($dir));
      $dir_depart .= $dossier;
      }
      }
     
     
      function create_tab ($dir) { // fonction creant le tableau contenant les repertoires et fichiers
  $dir = rtrim ($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
  if (is_dir ($dir)) // si c'est un repertoire
  $dh = opendir ($dir); // on l'ouvre
  else {
  echo $dir, ' n\'est pas un repertoire valide'; // sinon on sort! Appel de fonction non valide
  exit;
  }
  while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire
  if ($file !== '.' && $file !== '..') { // no comment
  $path =$dir.'/'.$file; // construction d'un joli chemin...
  if (is_dir ($path)) { //si on tombe sur un sous-repertoire
  $tableau[$dir]['dir'][] = $path;
  $tabTmp = create_tab ($path); // appel recursif pour lire a l'interieur de ce sous-repertoire
  if (is_array ($tabTmp) && is_array ($tableau))
  $tableau = array_merge ($tableau, $tabTmp);
  }
  else
  $tableau[$dir]['file'][] = $path;
  }
  }
  closedir ($dh); // on ferme le repertoire courant
  if (isset ($tableau)) {
  return $tableau;
  }
  }

  function copier_rep ($destination, $reps, $tableau_dir = array ()) {
  if (empty ($tableau_dir)) {
  //echo 'Entrée';
  $tableau_dir = create_tab ($reps);
  }
  if (!is_array ($reps)) {
  $reps = array ($reps);
  }
  foreach ($reps as $rep) {
  if (!is_dir ($destination.'/'.basename ($rep))) {
  mkdir ($destination.'/'.basename ($rep));
  if (!empty ($tableau_dir[$rep]['file']) && isset($tableau_dir[$rep]['file']) && is_array ($tableau_dir[$rep]['file'])) {
  foreach ($tableau_dir[$rep]['file'] as $fichier) {
  copy ($fichier, $destination.'/'.basename ($rep).'/'.basename ($fichier));
  }
  }
  if (!empty ($tableau_dir[$rep]['dir']) && isset ($tableau_dir[$rep]['dir']) && is_array ($tableau_dir[$rep]['dir'])) {
  copier_rep ($destination.'/'.basename ($rep), $tableau_dir[$rep]['dir'], $tableau_dir);
  }
  }
  }
  }  
     
  ?>
      <?php
      if ( isset ( $_POST['submit'] ) ) {
        $repertoire = $_POST['repertoire'];
          MakeDir($repertoire);
          echo "repertoire ". $repertoire ." correctement inséré
";           
        copier_rep ($repertoire, 'source'); // 1er paramètre : le répertoire de destination sous forme d'une chaine
                                  // 2d paramètre : le répertoire à copier sous forme d'une chaine ou d'un tableau

}
?>           
<form action = "" method="post">
  ----

    Nom de sous domaine :,
    ,
 
  ----
 
    <center></center>,
        

</form>

Voilà le code complet...
Burnside.

..:: Enjoy living in hell ::..
http://www.art-line.be