Récupérer un dossier entier en FTP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupérer un dossier entier en FTP

Re: Récupérer un dossier entier en FTP

par 4lO5AN » 17 mai 2014, 16:37

Mon sujet est résolue !

Le code de dessus marche parfaitement il s'agissait d'un problème de droit d’accès aux dossiers.
En effet je travaille pour un prestataire et donc je n'ai pas pensez à cela ! Dépité....

Re: Récupérer un dossier entier en FTP

par 4lO5AN » 03 mai 2014, 13:54

Merci moogli j'ai pu avancer grâce à toi !

Je mettrais le code complet une fois que tout sera au point !

Re: Récupérer un dossier entier en FTP

par moogli » 02 mai 2014, 22:35

salut,

vire les @ c'est moche et inutile en dev (et en prod on n'affiche pas les erreurs donc aucun intérêt ;).


as tu tenté un débug avec ton ide préféré ?
le but étant d'être certain de ce que fait ta fonction (pas de boucle infinie sur le while, que tu passe bien les donne infos quand tu ré emploi la fonction récusive etc.

opendir prend en paramètre une chaîne de caractère et non une ressource de connexion.

si tu veux indiquer utilisateur et mot de passe avec opendir :
<?php
$dir = opendir('ftp://user:[email protected]');
en debug tu pourras voir ce que contient $dir.

@+

Re: Récupérer un dossier entier en FTP

par 4lO5AN » 02 mai 2014, 12:13

Merci de tes réponses moogli

J'ai fait quelque chose comme cela mais ma page tourne en boucle


// Mise en place d'une connexion basique
$connexion = ftp_connect($ftp_server, $port, 2);


// Authentification & Vérification FTP
if (@ftp_login($connexion, $ftp_user_name, $ftp_user_pass)) {
        
        echo "<div align='right' class='details'>Connecté\n</div>";

        // Activation du mode passif
        ftp_pasv($connexion, true);

        $src = $connexion;
        $dst = "test/";

        recurse_copy($src,$dst);

        // Fermeture de la connexion
        ftp_close($connexion);


// Affichage si pas de connexion possible
} else {
        echo "<div align='center'><span class='rouge'>Connexion impossible au serveur privé de l'association <strong>WDA</strong>.<br /><br />Veuillez nous en excuser et réessayez SVP ultérieurement.\n</span></div><br />";
}


ftp_close($conn_id);



    function recurse_copy($src,$dst) {

        $dir = opendir($src);
        @mkdir($dst);

        while(false !== ( $file = readdir($dir)) ) {
            if (( $file != '.' ) && ( $file != '..' )) {

                if ( is_dir($src . '/' . $file) ) {

                    recurse_copy($src . '/' . $file,$dst . '/' . $file);
                }

             else {
                copy($src . '/' . $file,$dst . '/' . $file);
             }

            }
        }
        closedir($dir);
    }





Re: Récupérer un dossier entier en FTP

par moogli » 02 mai 2014, 10:22

is_dir permet de savoir s'il s'agit d'un dossier, et utilisable avec ftp

sinon ftp_raw_list tu fournira plus de détails mais faut parser le retour (si commecne par un d c'est un répertoire, par l un lien symbolique, - un fichier).

pour la récursivité, c'est a toi de la gérer en fonction de si c'est un répertoire ou pas.
ftp_rawlist gère la chose avec le 3ème paramètre.

@+

Re: Récupérer un dossier entier en FTP

par 4lO5AN » 02 mai 2014, 09:40

Oui je comprend ou tu veux en venir avec la récursivité .

Mais qu'est-ce qui me permet de lister des dossiers ?

ftp_nlist me liste seulement les fichiers
ftp_get me 'télécharge' seulement les fichiers

Avec quel méthode parcourir mon dossier global ? Et quelle méthode me permet de vérifier si c'est un dossier ou non ?

Re: Récupérer un dossier entier en FTP

par moogli » 02 mai 2014, 00:59

et tu ne sais pas faire une fonction récursive ?

la suite ce fait avec ftp_get

commence par lire le contenu du répertoire distant et après tu pourras faire la copie.

@+

Re: Récupérer un dossier entier en FTP

par 4lO5AN » 01 mai 2014, 23:22

Merci moogli mais cela ne résous pas mon problème.

Ce code liste seulement les fichiers dans le dossier principal. Mon but étant de copier tous les sous-dossier ainsi que les fichiers à l’intérieur.
Apres cela je pourrais faire ma copie.

Re: Récupérer un dossier entier en FTP

par moogli » 01 mai 2014, 23:06

salut,

un sujet récent parle aussi de FTP et te fournit des pistes pour faire ce que tu souhaite php-debutant/lenteurs-scan-ftp-t270993.html

merci d'utiliser le formulaire de recherche du forum :mrgreen:

@+

Récupérer un dossier entier en FTP

par 4lO5AN » 01 mai 2014, 22:48

Bonsoir,

Je cherche depuis plusieurs heures maintenant quelque chose qui me semble pourtant basique.

En php je souhaite me connecter en ftp et récupérer en local un dossier avec ses sous répertoire et ses fichiers.

J'ai épuisé beaucoup de forum sans résultat. Ma connexion ftp fonctionne et en voici le code :
//récupère mes id de connexion
list ($ftp_server,$port,$ftp_user_name,$ftp_user_pass) =  ftpConf();
 
 
    // Mise en place dune connexion basique
    $conn_id = ftp_connect($ftp_server);
      
    // Identification avec un nom dutilisateur et un mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
      
  
    // Vérification de la connexion
    if ((!$conn_id) || (!$login_result) || (!$mode)) {
            echo "La connexion FTP a échoué !";
 
    } else {
            echo "Connexion au serveur $ftp_server, pour l'utilisateur $ftp_user_name";
        }