IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Transférer un dossier d'un FTP à un autre FTP


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Transférer un dossier d'un FTP à un autre FTP
    Bonsoir la communauté,

    J'ai du mal à trouver un script en PHP activé par une tache Cron, qui me permettrait de transférer un dossier d'un FTP à une autre FTP. Est-ce que quelqu'un aurait un petit code pour faire cela ? Est-ce que le PHP7 le permet aussi ?
    De mon coté je ne trouve que du téléchargement pour un fichier mais pas pour un dossier.

    Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
     
    //CONNEXION FTP AVEC PHP
     
    //DEFINITION DES VARIABLE DE CONNEXION
    $ftp_server = "xxx.xxxxxxxxx.fr";
    $ftp_user_name = "xxxxx-xxxxxx";
    $ftp_user_pass = "xxxxxxxx";
    $conn_id = ftp_connect($ftp_server);
    //IDENTIFICATION FTP
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    //VERIFICATION DE LA CONNEXION
    if ((!$conn_id) || (!$login_result)) {
            echo "La connexion FTP a échoué !<br>";
            echo "Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name";
           exit;
    	   } else {
            echo "Connexion au serveur $ftp_server, pour l'utilisateur $ftp_user_name<br />";
        }
     
     
    // Récupération du contenu d'un dossier
    $contents = ftp_nlist($conn_id, "/.");
     
    // Affichage de $contents
    var_dump($contents);
     
    //CHARGEMENT ET D'UN FICHIER
    $upload = ftp_get($conn_id, "xxx.mp3", "xxxx.mp3", FTP_BINARY); 
     
     
    //VERIFICATION DU BON CHARGEMENT DU FICHIER
    	if (!$upload) {
            echo "<hr />Le chargement FTP a échoué!";
        } else {
            echo "<hr />Le chargement FTP est ok";
        }
    //FERMETURE DE LA CONNEXION
    ftp_close($conn_id);
    ?>
    Sur cet exemple je peux télécharger un fichier mp3 un seul.

    Est-ce qu'on peut le modifier pour pouvoir télécharger un dossier en entier de mp3?

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 096
    Points
    43 096
    Par défaut
    Il te faut faire une boucle en prenant chaque fichier contenu dans le dossier, liste récupérée via ftp_nlist
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //CHARGEMENT ET D'UN FICHIER
    $upload = ftp_get($conn_id, "xxx.mp3", "xxxx.mp3", FTP_BINARY);
    Bonjour chrtophe

    J'ai essayé justement de rentrer tous les fichiers du dossier dans cette partie du code mais ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Récupération du contenu d'un dossier
    $contents = ftp_nlist($conn_id, "/.");

    En sachant que j'arrive à avoir la liste du dossier mais ça ne télécharge pas

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    ftp_nlist te retourne une liste de noms de fichiers. Donc il faut boucler dessus, faire un appel à ftp_get sur chaque nom de fichier (et éventuellement ftp_put pour le mettre à un autre endroit)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Celira Voir le message
    ftp_nlist te retourne une liste de noms de fichiers. Donc il faut boucler dessus, faire un appel à ftp_get sur chaque nom de fichier (et éventuellement ftp_put pour le mettre à un autre endroit)
    Bonjour Celira

    En fait je met le fichier PHP dans le dossier où vont arriver les fichiers téléchargés, tout simplement.

    Au niveau du code ça donnerait quoi? s'il te plait!

    désolé je suis plus que débutant dans le PHP.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé ce script mais il ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    /*---------------------------------------------------------------*/
    /*
        Titre : Téléchargement d'un dossier FTP                                                                             
                                                                                                                              
        URL   : https://phpsources.net/code_s.php?id=845
        Date édition     : 14 Fév 2019                                                                                        
    */
    /*---------------------------------------------------------------*/
     
    function ftp_getdir($host , $user , $passwd , $remotedir , $localdir , $port=21)
    { 
     /* Paramètres 
      * $host : hôte FTP 
      * $user : login 
      * $passwd : mot de passe 
      * $remotedir : dossier à  telecharger 
      * $localdir : dossier ou enregister les infos 
      * $port : port de connexion 
      */ 
      if (func_num_args() == 7) 
      { 
      $stream = func_get_args(6); 
      } 
      else 
      { 
      $stream = ftp_connect($host, $port); 
      if (!ftp_login($stream, $user, $passwd)) 
      return FALSE; 
      if (!ftp_chdir($stream, $remotedir)) 
      return FALSE; 
      } 
      if (!is_writable($localdir)) 
      return FALSE; 
     
      $list = ftp_nlist($stream, '.'); 
      if (is_array($list)) 
      { 
      while(list($k, $v) = each($list)) 
      { 
      if (@ftp_chdir($stream, $v)) 
      { 
      if (!file_exists("$localdir/$v")) 
      mkdir("$localdir/$v", 0777); 
      ftp_getdir($host, $user, $passwd, "$remotedir/$v", "$localdir/$v", $port, 
    $stream);
      ftp_cdup($stream); 
      } 
      else 
      { 
      $fp = fopen("$localdir/$v", 'w'); 
      if (is_resource($fp)) 
      ftp_fget($stream, $fp, $v, FTP_BINARY); 
      fclose($fp); 
      } 
      } 
    }
     
    ?>

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Je suis entrain de plancher sur celui là mais j'ai un souci il me télécharge pas tous les fichiers je comprend pas qu'est ce qu'il cloche dans ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    $ftp_server = "chronique.xxxxxxxxx.fr";
    $conn_id = ftp_connect ($ftp_server)
        or die("Couldn't connect to $ftp_server");
     
    $login_result = ftp_login($conn_id, "xxxx-1xxxx", "4xxxxxxxxxxxx6");
    if ((!$conn_id) || (!$login_result))
        die("FTP Connection Failed");
     
    ftp_sync ("MON-DOSSIER");    // Use "." if you are in the current directory
     
    ftp_close($conn_id); 
     
    // ftp_sync - Copy directory and file structure
    function ftp_sync ($dir) {
     
        global $conn_id;
     
        if ($dir != ".") {
            if (ftp_chdir($conn_id, $dir) == false) {
                echo ("Change Dir Failed: $dir<BR>\r\n");
                return;
            }
            if (!(is_dir($dir)))
                mkdir($dir);
            chdir ($dir);
        }
     
        $contents = ftp_nlist($conn_id, ".");
        foreach ($contents as $file) {
     
            if ($file == '.' || $file == '..')
                continue;
     
            if (@ftp_chdir($conn_id, $file)) {
                ftp_chdir ($conn_id, "..");
                ftp_sync ($file);
            }
            else
                ftp_get($conn_id, $file, $file, FTP_BINARY);
        }
     
        ftp_chdir ($conn_id, "..");
        chdir ("..");
     
    }
    ?>

Discussions similaires

  1. [OL-2003] Transférer un dossier de la boite de reception à un autre utilisateur
    Par hélios44 dans le forum Outlook
    Réponses: 1
    Dernier message: 28/08/2009, 10h41
  2. Transférer des données d'une table à une autre
    Par picoloto dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/12/2005, 10h01
  3. Applet qui s'execute dans un dossier mais pas dans l'autre
    Par Battosaiii dans le forum Applets
    Réponses: 11
    Dernier message: 10/12/2005, 15h54
  4. TRansférer des données d'une table à l'autre
    Par kernel57 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/10/2005, 14h05
  5. Transférer une base d'un serveur à un autre
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/09/2005, 10h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo