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

Langage PHP Discussion :

[FTP] Récupération de fichier sur un serveur distant


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut [FTP] Récupération de fichier sur un serveur distant
    Bonjour,
    alors voilà je vous explique, je dois récupérer des fichiers qui sont dans un dossier sur un serveur distant. Ce sont des fichiers .ktl (fichiers texte), je dois récupérer les données qui sont dans chaque fichier présent dans le dossier dont le chemin est Froduction/working/mef_ktl/outfile.
    J'ai fait un code qui doit (normalement) ouvrir le dossier et afficher la liste des fichier qui le compose. Ca fonctionne très bien quand je le fais avec un dossier qui se trouve en local mais pas avec celui qui est sur le serveur distant.
    Voilà mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $link = mysql_connect("192.168.1.6", "##", "##") or die("Impossible de se connecter : " . mysql_error());
    $handle = @opendir("F:/Production/Working/mef_ktl/outfile/"); 
    while ($file = @readdir($handle)) { 
    echo "Fichier : ". $file. "<BR>"; 
    }
    @closedir($handle);
    ?>
    Quand je l'éxecute, il me retourne une page blanche, comme si le dossier était vide. Mais en fait je pense qu'il ne rentre pas dans le while parce qu'il ne m'affiche même pas le "Fichier:".
    J'espère que j'ai été assez clair!
    Merci d'avance de votre aide
    Bonne journée

  2. #2
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Explique nous que viens faire "mysql_connect" là dedans?

    Je crois que tu mélange peut être un peu les genre non? ou alors s'est une étourderie
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut
    C'est pas une étourderie, en fait je sais que c'est pas bon puisque c'est pour avoir accès à la base or, je ne m'en sers pas, mais je sais pas si mettre simplement le chemin du dossier ça lui suffit à savoir où il faut qu'il aille chercher sachant qu'il y a plusieurs serveurs distants.
    C'est compréhensibles??!!
    merci

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 207
    Points
    207
    Par défaut
    Ben clairement il va aller chercher sur le disque portant la lettre F de ta machine sur laquelle est hebergé ton script (ce qui peut être pire sur du linux)

    Il serait je pense mieux de mettre le chemin avec l'adresse IP.
    Ou utilise les fonction FTP de PHP pour te connecter et télécharger en local les fichiers.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut
    Tu peux me mettre un exemple stp.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 207
    Points
    207
    Par défaut
    pour les fonction ftp, rien de bien compliquer:
    http://fr2.php.net/manual/fr/ref.ftp.php

    sinon
    $handle = @opendir("http://192.128.0.1/Production/Working/mef_ktl/outfile/");

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut
    Merci, j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $handle = @opendir("http://192.128.1.6/Production/Working/mef_ktl/outfile/");
    Mais ça m'affiche une page blanche.

    Et je suis pas sure de l'autre code, le voilà:
    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
    <?php
    // Mise en place d'une connexion basique
    $conn_id = ftp_connect("192.168.1.6");
    
    // Identification avec un nom d'utilisateur et un mot de passe
    $login_result = ftp_login($conn_id, "login", "motdepasse");
    
    // Vérification de la connexion
    if ((!$conn_id) || (!$login_result)) {
            echo "La connexion FTP a échoué !";
            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";
        }
    
    // Chargement d'un fichier
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 
    
    // Vérification du status du chargement
    if (!$upload) {
            echo "Le chargement FTP a échoué!";
        } else {
            echo "Chargement de $source_file vers $ftp_server en tant que $destination_file";
        }
    
    // Fermeture du flux FTP
    ftp_close($conn_id);
    ?>
    Mais ça m'affiche ce message d'erreur:
    Warning: ftp_login() [function.ftp-login]: Login or password incorrect! in C:\wamp\www\ftp.php on line 7
    La connexion FTP a échoué !Tentative de connexion au serveur pour l'utilisateur

    J'ai essayé avec tous les logins et mot de passe, aucun ne fonctionne. Il doit y avoir une erreur quelque part je pense!
    merci

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 207
    Points
    207
    Par défaut
    ben pour le FTP il faut qu'il y ai un compte FTP sur la machine distante et que tu connaisses les login et mdp.

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut
    Je vais me renseigner auprès de mon maitre de stage.
    On peut quand même essayer avec handle. Vous sauriez pourquoi ça ne fonctionne pas?

  10. #10
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Compte tenu du fait que la configuratioin d'un serveur ftp n'est pas toujours très simple et que cela t'oublige à gérer des mots de passe et login.

    Si ton serveur est en interne, ce qui semble être le cas. Il serait peut être interessant pour toi d'utiliser cette méthode en ayant préalablement lancer un serveur web qui publie le chemin au dessus de Production .
    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
    $url = "http://192.128.1.6/Production/Working/mef_ktl/outfile/";
     
        $fp = fopen( $url, 'r' );
     
        $content = "";
     
     
        while( !feof( $fp ) ) {
     
           $buffer = trim( fgets( $fp, 4096 ) );
           $content .= $buffer;
     
        }
     
        echo $content;
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  11. #11
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Sinon regarde un peu la librairie CURL qui est dispo à partir de la version 5 de php.
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par riete
    Sinon regarde un peu la librairie CURL qui est dispo à partir de la version 5 de php.
    Non, c'est bien plus vieux et c'est ce qui rend cURL encore plus attrayant :
    Citation Envoyé par http://fr.php.net/curl
    Ces fonctions ont été ajoutées en PHP 4.0.2.

  13. #13
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par julp Voir le message
    Non, c'est bien plus vieux et c'est ce qui rend cURL encore plus attrayant :
    Ok j'ai pris note merci
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  14. #14
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut
    Merci de vos réponse, j'ai un autre soucis maintenant.
    Voilà mon 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
    <?php
    $valeur=0;
    set_time_limit($valeur);
    // Mise en place d'une connexion basique
    $conn_id = ftp_connect("192.168.4.1");
    // Identification avec un nom d'utilisateur et un mot de passe
    $login_result = ftp_login($conn_id, "", "");
    //Récupération du contenu d'un dossier
    $contents = ftp_nlist($conn_id, "/");
    // Affichage de $contents
    var_dump($contents);
    // Fermeture de la connexion
    ftp_close($conn_id);
    ?>
    Ca m'affiche ça:
    array(6) { [0]=> string(3) "/AR" [1]=> string(4) "/BDX" [2]=> string(4) "/DOC" [3]=> string(7) "/idfile" [4]=> string(5) "/NPAI" [5]=> string(5) "/temp" } NULL

    Je voudrais simplement récupérer le nom des dossiers, à savoir AR, BDX, DOC, idfile, NPAI et temp. Quelqu'un saurait comment je peux faire??
    Merci d'avance.

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous ne pouvez pas appliquer ce traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contents = array_map(create_function('$v', 'return trim($v, "/");'), $contents);
    ?

  16. #16
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 19
    Points
    19
    Par défaut
    J'ai une amélioration!!!
    J'arrive à avoir simplement \AR ...
    Le 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
    <?php
    $valeur=0;
    set_time_limit($valeur);
    // Mise en place d'une connexion basique
    $conn_id = ftp_connect("192.168.4.1");
    // Identification avec un nom d'utilisateur et un mot de passe
    $login_result = ftp_login($conn_id, "retour_ar", "retour_ar");
    //Récupération du contenu d'un dossier
    //$contents = array_map(create_function('$v', 'return trim($v, "/");'), $contents);
    $contents = ftp_nlist($conn_id, "/");
    // Affichage de $contents
    //$recup=file($contents);
    $nombre=count($contents);
    echo $nombre . "<br>";
    for($i=0;$i=$nombre;$i++){
    	$a=$contents[$i];
    	echo "Element " . $a . "<br>";
    }
    // Fermeture de la connexion
    ftp_close($conn_id);
    ?>
    Le problème c'est que le for tourne indéfiniement et que ça m'affiche rien (enfin si le "Element" mais $a est vide pour lui).
    Quand je fai à la place du for juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a=$contents[0];
              echo $a;
    par exemple
    Ca me renvoie bien \AR.
    Je comprends pourquoi le for ne fonctionne pas, si quelqu'un a une idée!!
    Merci
    Bonne journée

Discussions similaires

  1. Copier un fichier sur un serveur distant par ftp
    Par islyoung2 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/08/2009, 10h13
  2. [FTP] Lecture d'un fichier sur un serveur distant
    Par Megaolix dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2008, 05h20
  3. Réponses: 5
    Dernier message: 23/11/2007, 11h24
  4. [FTP] Récupération taille fichier sur ftp
    Par Kerod dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2006, 03h18
  5. [FTP] liste de fichier sur un serveur ftp
    Par nicoaix dans le forum Langage
    Réponses: 9
    Dernier message: 22/12/2005, 12h19

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