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

Bibliothèques et frameworks PHP Discussion :

Téléchargement de plusieurs fichiers en FTP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut Téléchargement de plusieurs fichiers en FTP
    Bonjour,

    je voudrais télécharger des fichiers en ftp, ils sont nommés avec le format Fichier.201006.txt

    avec ftp_get($conn_id, $local_file, $ftp_path, FTP_BINARY), il faut que je spécifie exactement les noms de fichiers source et ceux des fichiers où on va écrire, mais le noms de fichiers source changent, donc j'aimerais bien pouvoir mettre par exemple Fichier.* mais ça n'a trop l'air de marcher !

    est ce qu'il y a donc un moyen de télécharger des fichier, sans spécifier exactement leur noms complet ?

    Merci pour l'aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    ils sont tous dans le même dossier? et il n'y a que ceux-la dans ce dossier?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut Téléchargement de plusieurs fichier en ftp
    j'ai deux type de fichiers :
    toto.2010xx.txt avec xx le numéro du mois
    tata.2010xx.txt avec xx le numéro du mois

    et j'ai deux répertoires différent pour chaque type de fichier: TOTO/ et TATA/

    et oui normalement il n'y a que ces fichiers dans chaque répértoire.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    bonsoir,
    peut être avec un truc comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $conn_id=1;
    $local_file="toto";
    for($i=1;$i<=12;$i++)
    {
    	if($i<=9){$a="0".$i;}else{$a=$i;}
    		if(file_exists("toto.2010".$a.".txt")){
    			ftp_get($conn_id, $local_file,"toto.2010".$a.".txt", FTP_BINARY);
    			}
    }
    ?>
    ce qui doit donner:
    ftp_get(1,"toto","toto.201001.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201002.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201003.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201004.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201005.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201006.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201007.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201008.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201009.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201010.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201011.txt", FTP_BINARY)
    ftp_get(1,"toto","toto.201012.txt", FTP_BINARY)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    Après test, j'ai eu l'erreur suivante :
    Warning: ftp_get() [function.ftp-get]: toto.201006.txt: No such file or directory

    apparemment, il faut qu'un fichier avec le même nom soit présent dans le répertoire où je mets les fichiers téléchargés !
    parce que avec un seul fichier, ce code marche bien :
    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
     
    $host = 'adresse IP;
    	$usr = 'login';
    	$pwd = 'passwd';
     
          	$ftp_path = '/home/Test/toto.201006.txt';
                 $local_file = 'C:\Documents\toto.201006.txt';
     
    	$conn_id = ftp_connect($host);
    	$login_result = ftp_login($conn_id, $usr, $pwd);
    	if ((!$conn_id) || (!$login_result))
    	{
    		echo " La connexion FTP a échoué!";
    	}
    	else
    	{
    		echo " Connecte a serveur1 ";
     
     
    		$download = ftp_get($conn_id, $local_file, $ftp_path, FTP_BINARY);
     
    		if (!$download)
    		{
    			echo "Le téléchargement Ftp a échoué!";
    		}
    		else
    		{
    			echo " Téléchargement est OK !!!";
    		}
    	}
    	ftp_quit($conn_id);

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    ouais,
    mais il faut adapter ce que je t'ai mis
    à savoir que se sont des chemins absolus.
    effectivement, j'aurais du préciser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $conn_id=1;
    $cheminserveur="l'adresse de ton dossier toto";
    $local_file="toto";
    for($i=1;$i<=12;$i++)
    {
    	if($i<=9){$a="0".$i;}else{$a=$i;}
    		if(file_exists($cheminserveur."/toto.2010".$a.".txt")){
    			ftp_get($conn_id, $local_file,$cheminserveur."/toto.2010".$a.".txt", FTP_BINARY);
    			}
    }
    ?>

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    ça a l'air de marcher en partie maintenant, il reste un petit souci :

    si j'ai bien compris, après le téléchargement de chaque fichier, on l'écrit sur un fichier en local ($local_file), ce qui fait que quand on a deux fichier ou plus, on n'aura que le dernier, puisque les autres sont écrasé après écriture du dernier.

    ce qui fait qu'on a besoin de créer en local autant de fichiers que ce qu'on peut éventuellement télécharger, et mettre autant de variables $local_file.

    c'est bien ça ? sinon est ce qu'il y a une solution qui créer des fichier dynamiquement en local en fonction de ce qu'on trouve sur le serveur distant ?

    Merci.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    non,
    c'est vrai que mon exemple était pas complet.
    faut créer, dynamiquement les fichiers locaux
    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
     
     
    <?php
    $conn_id=1;
    $cheminserveur="l'adresse de ton dossier toto";
    $cheminlocal="l'adresse de ton dossier local toto";
     
    for($i=1;$i<=12;$i++)
    {
    	if($i<=9){$a="0".$i;}else{$a=$i;}
    		if(file_exists($cheminserveur."/toto.2010".$a.".txt")){
    			ftp_get($conn_id, $cheminlocal."/toto.2010".$a.".txt",$cheminserveur."/toto.2010".$a.".txt", FTP_BINARY);
    			}
    }
    ?>

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    je crois qu'il y a un petit problème avec le chemin en windows
    si je mets la variable du chemin local et le get de cette façon, ça ne marche pas, le téléchargement échoue !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $local_file="C:\Documents"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp_get($conn_id, $local_file."\toto.2010".$a.".txt",$ftp_path."/Seuil.2010".$a.".txt", FTP_BINARY)
    j'ai essayé de mettre des / au lieu des \, mais ça marche pas non plus !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    $local_file="C:\Documents"
    t'es sur de ton chemin local?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    oui, puisque ça marche bien avec un seul fichier.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    Je crois que le problème n'est pas vraiment dans le chemin. je crois qu'il est dans la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_exists($cheminserveur."/toto.2010".$a.".txt")
    parce qu'il suffit que j'enlève $cheminserveur. et créer un fichier en local avec le bon nom pour que ça marche.
    donc est ce qu'on est sûr que file_exists marche bien avec un fichier distant ?

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    Finalement je l'ai fait un peu différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $conn_id=1;
    $local_file="toto";
    for($i=1;$i<=12;$i++)
    {
        if($i<=9){$a="0".$i;}else{$a=$i;}
        @ftp_get($conn_id, $local_file,"toto.2010".$a.".txt", FTP_BINARY);
    }
    ?>
    comme ça j'évite le test sur l'existance, et en ajoutant le @, j'évite les messages d'erreurs dans le cas où le fichier n'existe pas, et je récupère tous les fichiers existants sur le serveur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Client FTP téléchargement de plusieurs fichiers
    Par el_coyote dans le forum Web & réseau
    Réponses: 0
    Dernier message: 18/09/2012, 22h43
  2. Réponses: 2
    Dernier message: 19/07/2011, 10h36
  3. Réponses: 3
    Dernier message: 11/02/2010, 13h47
  4. Supprimer plusieurs fichier sur FTP
    Par DevPerl dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 16/09/2007, 23h38
  5. Téléchargement de plusieurs fichiers
    Par tomburn dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 05/06/2007, 16h17

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