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 upload : problème de chemin [PHP 5.4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieure novice !
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Ingénieure novice !
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut FTP upload : problème de chemin
    Bonjour !!

    Je souhaite uploader un fichier local vers un serveur FTP, c'est la première fois que je fais ça. Pour l'instant je suis en phase de développement et le serveur FTP se trouve sur mon propre ordinateur (localhost).

    Voilà, quelque chose me turlupine : je n'arrive à uploader mon fichier "fichier.txt" vers le dossier "dossier" si et seulement si je fournis le chemin d'accès absolu de mon fichier.txt à uploader, c'est-à-dire qu'il faut que j'écrive en dur dans mon script '/chemin/vers/fichier.txt'. Or, lorsque mon serveur sera distant, je ne pourrais pas et ne voudrais pas avoir à savoir le chemin absolu du fichier du poste client. J'ai d'ailleurs lu beaucoup de forums et docs précisant que pour des raisons de sécurité cela n'est ni souhaitable ni possible.

    Du coup, je ne comprends pas comment faire pour récupérer le fichier à uploader via FTP. Je ne trouve pas de questions similaires sur les forums, ce qui me fait penser que quelque chose d'évident m'échappe... Sauriez-vous m'aider ?

    Par avance je vous remercie


    J'utilise la fonction ftp_put() appelée par la méthode uploadFile(), définie par une classe ftp, comme ceci :

    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
    // Inclusion de la classe ftp
    include("ftp_class.php");
    define('FTP_HOST', 'localhost');
    define('FTP_USER', 'myname');
    define('FTP_PASS', 'mypwd');
     
    // Objet FTP
    $ftpObj = new FTPClient();
     
    // Connexion serveur FTP
    if ($ftpObj -> connect(FTP_HOST, FTP_USER, FTP_PASS)) {
       $dir = 'dossier';
       $fileFrom = "fichier.txt";				
       $fileTo = $dir . "/" . 'fichier.txt';
       // Appel à la fonction de la classe
       $ftpObj -> uploadFile($fileFrom, $fileTo);
    }
    Sachant que la fonction uploadFile() de ftp_class.php est définie ainsi :

    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
    public function uploadFile ($fileFrom, $fileTo) {
       // *** Set the transfer mode
       $asciiArray = array('txt', 'csv');
       $extension = end(explode('.', $fileFrom));
       if (in_array($extension, $asciiArray)) {
          $mode = FTP_ASCII;		
       } else {
           $mode = FTP_BINARY;
       }
     
       // *** Upload the file
       $upload = ftp_put($this->connectionId, $fileTo, $fileFrom, $mode);
     
       // *** Check upload status
       if (!$upload) {
          $this->logMessage('FTP upload has failed!');
          return false;
       } else {
          $this->logMessage('Uploaded "' . $fileFrom . '" as "' . $fileTo);
          return true;
       }
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je souhaite uploader un fichier local vers un serveur FTP
    Ce n'est pas possible : PHP n'a pas accés aux fichiers du client.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieure novice !
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Ingénieure novice !
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    Merci pour ta rapide réponse,

    Alors dans quels cas utilise-t-on la fonction PHP ftp_put() , dont la définition est quand même : ''ftp_put — Charge un fichier sur un serveur FTP'' ?

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieure novice !
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Ingénieure novice !
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    Ta réponse m'a aiguillée vers les bons mots clefs et je suis tombée sur un autre forum avec cette réponse détaillée :
    Dans ce cas tu peux oublier l'option FTP

    Grosso modo, quand tu fais un "put" via FTP, cela signifie que :
    - tu as un client FTP sur ta machine
    - tu es connecté à un serveur FTP
    - tu va envoyer un fichier depuis ton ordinateur vers le serveur auquel tu t'es connecté

    Lorsque PHP fait un "put" via FTP, cela signifie :
    - qu'il est un client FTP
    - qu'il est connecté à un serveur FTP
    - qu'il va envoyer un fichier depuis la machine où il est installé, vers le serveur auquel il s'est connecté

    Pour faire simple, en php, le FTP va te servir à faire des transfert de fichiers entre serveurs, mais pas entre un client et un serveur. Pour cela il te faut utiliser le protocole HTTP, en utilisant un formulaire html et des champs de type file. PHP pourra alors récupérer le fichier que tu envois depuis ton poste vers le serveur à l'aide de la fonction move_uploaded_file()
    Je comprends donc que ftp_put() ne fonctionne que pour le transfert de fichiers de serveur en serveur. La solution proposée par ce post est d'utiliser le protocole HTTP et la fonction PHP move_uploaded_file, pourtant dans de précédentes lectures de topics j'avais lu qu'il était préférable d'utiliser le protocole FTP. Dans mon cas, je n'ai donc pas le choix ? Ou bien puis-je utiliser le protocole FTP à l'aide d'un autre langage que PHP ? (A terme mon objectif est que l'utilisateur de mon interface web puisse uploader un fichier vers un serveur grâce à un formulaire)

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieure novice !
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Ingénieure novice !
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    Pour ceux que ça intéresse, j'ai réussi à exécuter un transfert de fichiers via le protocole FTP en php, grâce aux variables globales $_FILES qui récupèrent le nom et le nom du fichier temporaire après un envoi par formulaire avec l'enctype "multipart/form-data", et aux fonctions ftp_chdir() et fpt_put().

    Merci quand même et bonne journée !

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'a pas fais un transfert en FTP mais juste un déplacement sur le serveur.
    Ton transfert client->serveur est via en HTTP.

    Moi je trouve qu'utiliser un protocole réseau pour manipuler des fichiers locaux c'est un peu ... bizarre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. [Upload] Problème d'upload par ftp
    Par wishmastah dans le forum Langage
    Réponses: 3
    Dernier message: 22/06/2006, 15h57
  2. [Upload] Problème d'upload :)
    Par manu_du_31 dans le forum Langage
    Réponses: 3
    Dernier message: 14/11/2004, 15h56
  3. [XSLT] Problème de chemin d'accès + XSLT
    Par Jorus dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/09/2004, 08h36
  4. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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