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] Télécharger un fichier par FTP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut [FTP] Télécharger un fichier par FTP
    Bonjour tout le monde.

    J'ai développé une petite interface web afin que mes clients puissent uploader puis télécharger leurs fichiers. Pour se faire, ils s'identifient sur une page en ligne et arrivent sur une page avec la liste de leurs fichiers déjà uploadés, ainsi qu'un formulaire d'upload au cas où ils voudraient monter un nouveau fichier.
    Au niveau de l'upload, aucun souci, le fichier qu'ils renseignent monte bien sur le serveur grâce à la fonction 'move_uploaded_file'.
    Par contre, au niveau du téléchargement, ca ne marche pas. je n'arrive pas à leur faire rapatrier un fichier qu'ils ont précédemment uploader.

    Pourtant, je liste la liste des fichiers présent dans leur repertoire grâce à la commande 'ftp_nlist' et les fichiers apparaissent bien. De même que lorsque je vérifie avec la commande 'is_file' si le fichier est bien présent, tout est toujours ok. Voici mon code déféctueux pour telecharger :

    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
     
    $server="ftp.domaine.com";
    $connexion=ftp_connect($server) or die("Problème de connexion au serveur, réessayer ultérieurement");
     
    $user = "mon_login";
    $pass = "mon_mdp";
    $res = ftp_login($connexion, $user, $pass);
     
    $mode = ftp_pasv($connexion, TRUE);
     
    //ici, en effectuant la commande ftp_pwd($connexion), je tombe bien dans le répertoire où sont stockés mes fichiers (à savoir /ftp/pub/nom_client/)
     
    //test de l'existence du fichier
    $dir=ftp_pwd($connexion);
    if(is_file($dir."/test.txt"))
       echo "fichier present";
    else
       echo "fichier non present";
     
    //je tente alors de telecharger le fichier vu que le fichier existe bien
     
     
    if (ftp_get($connexion, 'c:\toto.txt', 'test.txt', FTP_BINARY)) {
        echo "Le fichier test.txt a été écris avec succès\n";
    } else {
        echo "Il y a un problème\n";
    }
     
    //Il m'affiche alors ici que le fichier a été écris avec succès, mais impossible de le retrouver chez moi
    A noter qu'avant de tenter d'utiliser la methode ftp_get, j'avas essayé de mettre en place un lien direct dans la page qui avait cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo $dir."/test.txt";?>">link</a>
    mais un clic sur celui ci me renvoit une 404 not found.

    Si quelqu'un pouvait éclairer ma triste lanterne, je l'en remercierai grandement ...

    PS : les fichiers php de la page sont stockés dans le repertoire : /var/www/html/ftp_test/ et les fichiers des clients sont stockés dans /ftp/pub/nom_client/


    un grand merci d'avance

  2. #2
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    tu as essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (ftp_get($connexion, 'toto.txt', 'test.txt', FTP_BINARY)) {
    et de voir si le fichier toto.txt se trouve bien dans :
    var/www/html/ftp_test/ :

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par FFF
    tu as essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (ftp_get($connexion, 'toto.txt', 'test.txt', FTP_BINARY)) {
    et de voir si le fichier toto.txt se trouve bien dans :
    var/www/html/ftp_test/ :
    il ne se copie pas...

    Le must, ce serait que lorsque mon client s'est loggué, il clique directement sur le nom du fichier présent dans son répertoire (car j'arrive à afficher ce listing) et que ca lui ouvre la fenetre windows lui demandant où il souhaite neregistrer le fichier distant sur son pc. Mais la mise en place de lien <a></a> s'est avéré être un echec alors je me contenterai de l'enregitrer pour le moment par defaut dans le repertoire c:\ de son pc...

    Niveau synthaxe, vous pensez que c'est correct le code que j'ai mis plus haut ? dans ce cas, est-ce un problème de droit d'accès au fichier ? Je ne pense pas car la mise en place d'un lien me renvoyait une 404 not found et non une non-authorisation d'accès.. je suis perdu

  4. #4
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    tu peux essayé la fonction ftp_fget()
    http://fr.php.net/manual/fr/function.ftp-fget.php

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    autant pour moi, le fichier a bien été copié du répertoire de l'utilisateur vers mon répertoire où sont stockés mes fichiers php. en faisant un lien <a></a>, les fichiers sont désormais accessibles au téléchargement.
    Mais ce n'est tout de même pas bien propre car celà va encombrer mon répertoire de stockage des fichiers php... n'y a t-il pas une manière plus propre ?

    merci d'avance !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut relance du sujet.
    Bonjour,

    Je me permet de relancer ce sujet (vieux comme le monde) mais c'est toujours d'actualité pour moi et il n'y a toujours pas plus de renseignement sur internet...

    Je désire faire exactement la même chose que cette personne mais il faudrait vraiment que l'utilisateur choisisse la destination de son fichier pour l'enregistrement localement sur sa machine.
    Comment est-ce possible de forcer le navigateur à gérer le fichier de cette façon?

    Merci.
    Adrien.

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

Discussions similaires

  1. Réponses: 32
    Dernier message: 21/06/2012, 15h48
  2. [Débutant] télécharger un fichier par un Client FTP
    Par maestroENSI dans le forum C#
    Réponses: 1
    Dernier message: 11/08/2011, 17h42
  3. [FTP] Copie nouveaux fichiers par FTP
    Par forst dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2008, 10h44
  4. Transfert de fichier par ftp
    Par schub1015 dans le forum MFC
    Réponses: 3
    Dernier message: 14/01/2004, 17h53
  5. Réponses: 1
    Dernier message: 19/08/2003, 16h11

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