PHP - Upload Download FTP

Résolu
Bonjour,

je cherche des tutoriels pour faire un système d'upload en passant par une connexion ftp d'un formulaire html ou flash

et pour télécharger en passant également par une connexion ftp

je ne trouve rien de clair et en français sur le sujet.

merci de m'aider dans cette quête !

30 réponses

Résumé de la discussion

La problématique centrale est la faisabilité d'un système d'upload via FTP à partir d'un formulaire HTML ou Flash et le transfert FTP qui suit entre serveur et serveur. Des échanges montrent que c'est réalisable via PHP utilisant des fonctions FTP comme ftp_put; le formulaire HTTP transporte le fichier jusqu'au serveur, puis le script PHP l'envoie vers le serveur FTP. Plusieurs remarquent toutefois les contraintes liées à l'hébergeur (limites post, sécurité des identifiants FTP) et l'intérêt de privilégier une approche serveur à serveur plutôt que l'envoi direct FTP depuis le client. D'autres échanges évoquent des écarts de vitesse entre FTP et HTTP, les clients FTP offrant des débits supérieurs, tout en soulignant que la configuration serveur et le navigateur influencent fortement.

Bobot (l’IA à votre service)
  1. pour faire du ftp il faut un client ftp sur ton pc, c'est soit un logiciel comme filezilla ou fireftp soit un applet java lié à un script php par exemple

    tapes "ftpUload" tu as ce dernier cas
    1. On peut faire du ftp avec internet explorer ... mauvaise réponse !
  2. Ca doit exister mais c'est à usage privé ou pas ? Car à moment donné ton script devra se connecter au ftp ; est ce que sera pas un soucis de "sécurité" quelque part ?
    1. c'est pour un upload/download de musiques sur le site d'un groupe de zik (forcément)
      1. merci pour le liens

        il y a un moyen plus rapide pour uploader à partir un site ?
        1. Si c'est un petit groupe, créer autant d'accès ftp que de membres avec accès restreints serait peut-être plus simple.

          Si tu souhaites absolument passer par un site, non effectivement y'a pas plusieurs solutions pour l'upload.
          1. Oui dans ce cas autant utiliser un script php ou flash d'upload. As tu trouvé ton bonheur dans la liste de scripts que je t'ai donné ?
            1. Bon...

              Je vois bien que vous tournez en rond depuis cet après midi...

              IL EXISTE un moyen avec PHP de faire de l'upload en utilisant la connexion FTP !

              // création de la connexion
              $conn_id = ftp_connect("ftp.truc.bidule");
              // authentification avec nom de compte et mot de passe
              $login_result = ftp_login($conn_id, $login, $mdp);
              ftp_pasv($conn_id, TRUE);
              // vérification de la connexion
              if ((!$conn_id) || (!$login_result)) {
              echo "La connexion FTP a échoué!";
              // echo "Tentative de connexion à $ftp_server avec $ftp_user_name";
              die;
              } else {
              echo "Connecté sur serveur distant<br />";
              }
              // téléchargement d'un fichier
              $upload = ftp_put($conn_id, $tonfichierdepart, $tonfichierarrivee,FTP_BINARY );
              // Vérification de téléchargement
              if (!$upload) {
              echo "<br>Le téléchargement Ftp a échoué!";
              } else {
              echo "<br>Téléchargement de $img sur serveur distant";
              }
              // fermeture de la connexion FTP.
              ftp_quit($conn_id);


              Voilà.... Tout ca à mettre bien entendu en traitement APRES un formulaire utilisant l'envoi de fichier !

              Attention aux limites fixées par votre hébergeur !

              Pour le download... à voir.. ça doit surement se faire aussi.. une lecture des fonction PHP sur php.net pourra vous aider !

              Si vous avez des questions...

              1. IL EXISTE un moyen avec PHP de faire de l'upload en utilisant la connexion FTP !


                oui mais le php s'executant côté serveur le ftp se fait seulement entre ce serveur et lui même ou eventuellement vers un autre serveur, l'upload entre le PC lui même et le serveur est en http (<input type =$file)
                1. merci beaucoup mais comment lier ce script à un formulaire html?

                  est ce possible avec ce genre de formulaire?
                  <form action="" method="post" enctype="multipart/form-data">
                  <input type="file" name="file">
                  <input type="submit">
                  </form>
                  


                  je ne sais pas si ma façon de voir la chose est bonne, mais si on envois ça et qu'on remplace move_uploaded_file() par ton script, le fichier est déjà sur le serveur et on le déplace juste différemment?
                  1. ce n'est pas possible alors?

                    mais dans l'autre sens serveur >>> ordi ?
                    1. "oui mais le php s'executant côté serveur le ftp se fait seulement entre ce serveur et lui même ou eventuellement vers un autre serveur, l'upload entre le PC lui même et le serveur est en http (<input type =$file)"

                      Oui tout à fait !! 100% d'accord... Voilà donc pourquoi je disais à notre amis de bien faire attention aux limites fixées par l'hébergeur... (max post ect...)

                      "est ce possible avec ce genre de formulaire?

                      <form action="" method="post" enctype="multipart/form-data">
                      <input type="file" name="file">
                      <input type="submit">
                      </form>"


                      Oui tout a fait... ca commence par ça... puis après il faut récupérer tout ça en PHP et transférer avec le script plus haut.

                      "je ne sais pas si ma façon de voir la chose est bonne, mais si on envois ça et qu'on remplace move_uploaded_file() par ton script, le fichier est déjà sur le serveur et on le déplace juste différemment?"

                      En gros... oui...

                      "Ce n'est pas possible alors? "

                      Bah si, qui a dit que c'était impossible ?

                      "mais dans l'autre sens serveur >>> ordi ?"

                      Et bien documente toi sur les fonction FTP de php !! Tu as déjà un bel exemple de script qui fonctionne dans un sens avec des noms de fonction... ftp_put par exemple... il est donc facile de trouver sur php.net une fonction du même style mais qui le fait dans l'autre sens... non ?
                      1. Je ne pense pas que l'on puisse par un script php télécharger un fichier dans le sens serveur =>> PC

                        au niveau sécurité ce serait dangereux non ?
                        si un site pouvait à ton insu charger un fichier (hormis un cookie) sur ton ordi

                        par contre il faut voir du côté des liens dans une page html et chercher il y a une entête spécifique pour les pages qui sont téléchargées au lieu d'être affichées
                        1. d'accord mais le fichier téléchargé le sera en "local" sur le serveur qui supporte le php pas sur le PC
                          1. j'ai fais des recherches avant d'écrire sur le forum, je me débrouille généralement seul pour apprendre.

                            mais là ce que je ne comprend pas dans ta méthode c'est en quoi ca upload en ftp.

                            parce que quand tu envoi le formulaire c'est en http et le fichier s'upload en même temps dans le dossier temporaire du serveur.

                            après pour l'autre sens je n'y est pas encore réfléchit vraiment mais je bloque sur comment faire un liens du genre <a href="ftp://[...]/fichier.mp3>fichier</a> par rapport au paramètre de connexion.

                            après il est possible je pense de faire une page php avec un header(content-type: audio/mpeg); et de ce connecter sur cette page mais c'est autre chose...
                            1. tiens un petit lien qui devrait résoudre ton pb du sens serveur =>> PC:

                              http://actuel.fr.selfhtml.org/archives/docu/7.0/tcfe.htm
                              1. merci,

                                pour récapituler dit moi si je me trompe :

                                on ne peut pas faire d'upload d'un ordi vers un serveur en html / php directement en ftp.

                                et pour faire un download en ftp sécurisé il faut un identifant avec des droits restreints.
                                • 1
                                • 2