begin process at 2012 05 30 14:06:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

déplacer des fichiers et supprimer des dossiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

déplacer des fichiers et supprimer des dossiers

lundi 9 juillet 2007 à 13:45:04 | déplacer des fichiers et supprimer des dossiers

zut69


Bonjour,

Voilà j'ai un dossier photos avec pleins d'images, cependant je voudrais que mon code ouvre tous les sous-dossiers de "photos", ainsi que leurs sous-dossiers, sous-sous-dossiers, ... et que dès qu'il rencontre un fichier, il le déplace à la racine du dossier photo, pour finalement supprimer tous ces dossiers et sous-dossiers.
NB: le seul dossier qu'il ne doit pas traiter s'appelle "miniatures".

avant le script:

photos -> miniatures -> mini_1.jpg
                                     mini_2.jpg
                vacances - > sous_dossier -> ma_photo.png
                                     photo.jpg
               john.jpg
               kevin.jpg
etc...
après:

photos -> miniatures -> mini_1.jpg
                                     mini_2.jpg
                john.jpg
                kevin.jpg
                ma_photo.png
                photo.jpg

donc voilà, pour cela j'ai écrit le script suivant, il ne marche pas, ca a visiblement l'air d'etre un problème de chemin des répertoires. Voici le code, j'ai tout essayé pour le corriger j'espere que qqn pourra m'aider:

function detect_dir($rep)
{
$dir = opendir($rep);
    while($f = readdir($dir))
    {
       $rep = $rep."/".$f;
       if(is_dir($f))
       {
       if($f != "." && $f != "..")
       {
        detect_dir($rep);
        rmdir($rep);
       }
       }
       elseif(is_file($rep.$f))
       {
        copy($rep,$url."/clients/".the_path.$f);
        unlink($rep);
       }
    }
closedir($dir);
}


$the_path = "photos/";
$dir = opendir($the_path);
    while($f = readdir($dir))
    {
       if(is_dir($the_path.$f) && $f != "miniatures" && $f != "." && $f != "..")
       {
        detect_dir($the_path.$f);
        rmdir($the_path.$f);
       }
    }
closedir($dir);


En fait dans la partie verte, je liste le contenu du dossier photo, s'il trouve un dossier il le soumet à la fonction en bleu et ensuite le supprime.
Ma fonction liste le dossier, s'il trouve un autre dossier elle se relance elle-même mais en soumettant le nouveau répertoire, sinon si c est un fichier, il en fait une copie dans le dossier photo et ensuite le supprime (en gros il le déplace).
Le principe a l'air bon, ca devrait marcher !
J'ai vraiment besoin d'aide,
merci d'avance à tous,
FF
lundi 9 juillet 2007 à 15:33:32 | Re : déplacer des fichiers et supprimer des dossiers

Kysic

Membre Club
Salut,
il y a un problème
vous faîtes:

       $rep = $rep."/".$f;
puis
       elseif(is_file($rep.$f))
donc quand vous testez si c'est un fichier  vous testez
$rep."/".$f.$f au lieu de $rep."/".$f.
de plus vous testez également
if(is_dir($f)) au lieu de if(is_dir($rep) (ou if(is_dir($rep."/".$f) )
(Rq : on peut aussi déplacer un fichier en le renommant plutôt quand le copiant puis supprimant).

[ Lien ]
lundi 9 juillet 2007 à 17:03:58 | Re : déplacer des fichiers et supprimer des dossiers

zut69


Merci beaucoup, en corrigeant ces erreurs, ainsi que quelques autres que j'ai trouvé et ben ça marche !

Voici mon code qui marche déjà bien mieux au cas ou ca intéresserait quelqu'un:

function detect_dir($rep)
{
$dir = opendir($rep);
    while($f = readdir($dir))
    {
       if(is_dir($rep."/".$f) && $f != "." && $f != "..")
       {
        detect_dir($rep."/".$f);
        rmdir($rep."/".$f);
       }
       elseif(is_file($rep."/".$f))
       {
        if($f != "Thumbs.db") copy($rep."/".$f,"photos/".$f);
        unlink($rep."/".$f);
       }
    }
closedir($dir);
}

$the_path = "photos/";
$dir = opendir($the_path);
    while($f = readdir($dir))
    {
       if(is_dir($the_path.$f) && $f != "miniatures" && $f != "." && $f != "..")
       {
        detect_dir($the_path.$f);
        rmdir($the_path.$f);
       }
    }
closedir($dir);
lundi 9 juillet 2007 à 18:40:42 | Re : déplacer des fichiers et supprimer des dossiers

malalam

Administrateur CodeS-SourceS
Hello,

et en PHP5, un exemple à la va vite :

<?php
function moveAllTo ($sStart, $sTo) {
    if (!is_dir ($sStart)) {
        throw new Exception ($sStart.' is not a valid source directory');
    }
    if (!is_dir ($sTo)) {
        throw new Exception ($sTo.' is not a valid target directory');
    }
    $itDir = new RecursiveIteratorIterator (new RecursiveDirectoryIterator($sStart, RecursiveDirectoryIterator::CURRENT_AS_FILEINFO), RecursiveIteratorIterator::SELF_FIRST);
    while (true === $itDir -> valid ()) {
        if (false === $itDir -> isDot () && $itDir -> isFile()) {
            $sCur = $itDir -> current ();
            $sNew = $sTo.'/'.basename ($sCur);
            echo 'renaming ', $sCur, ' to ', $sNew, '<br />';
            rename ($sCur, $sNew);
        }
        $itDir -> next ();
    }
}

moveAllTo ('bli', '.');
?>



Cette discussion est classée dans : dossiers, dossier, rep, jpg, dir


Répondre à ce message

Sujets en rapport avec ce message

lister dossiers uniquements [ par shadow1779 ] Bonjour,il existe dans les codes de nombreux scripts pour lister le contenu d'un dossier, cependant cela liste les fichiers et dossier contenu, je vou afficher les images d'un dossier scanné [ par TrX ] Boujourle fichier php est a la racine du site et les .jpg son dans le dossier photos.$dir = "photos"; // Ouvre un dossier bien connu, et liste tous PHP Afficher le contenu d'un dossier et de ses sous-dossiers [ par jibtothenight ] Bonjour, avec ce code j'arrive à afficher le contenu de mon dossier :$dir = opendir('intranet/image_hd/'); while($file = readdir($dir)) { echo "<a hre affichage liste dossiers par ordre ALPHABETIQUE [ par mailliam ] Ello tous! Voilà moi je me sers du code suivant pour lister les dossiers d'un répertoire sur mon serveur. Seulement ils ne s'affiche pas par ordre al Afficher le nom d'une image en php [ par karim88 ] Bonjour, je débute en php donc merci de votre aide. Voilà, j'aimerai afficher les images d'un dossier (ici photos) mais SURTOUT leur nom de fichier pa Convertisseur JPG en PNG [ par VestaX ] Salut à tous, Je suis en train de dévlopper un petit morceau de code qui permet de convertir un JPG en PNG. Donc, le fichier est déposé sur le serve Trier mon tableau ... [ par florent73 ] Bonjour, j'ai un code qui affiche la liste des fichiers dans les répertoires et sous-répertoires, et j'aimerai trier cette liste en fonction de la dat Probleme de Permission [ par g_fuck ] salut !Il y a de cela 3 mois je fesais face a un probleme de permission(acces) dans l'entierte d'un de mes dossiers !dossiers qui stockait tous fichie suppresion de dossier recursif [ par pioug43 ] Bonjour, Je cherche un bout de code qui me permettrait de supprimer completment un dossier qui peut contenir indifferement plusieurs sous dossiers et PréChargement de sources et img [ par sambucus ] Bonjour,Voici ce bout de code qui appelle à distance un php (2ème ligne)  :include 'preload.php';include 'http://le.scenariste.free.fr/modules/myagmi/


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales