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. on peut en faire aussi avec firefox, et plein d'autres alors ça ne justifies pas ta remarque mauvaise réponse ! et le -2 surtout sur une réponse qui date de septembre 2009

    ça fait toujours plaisir avec toutes les aides que j'ai pu apporter dans ce forum !!!!!!
    1. Bonjour s'il vous plais je veux créer un progress bar qui affiche le pourcentage d'Upload des fichier via un serveur ftp j'ai fait le script d'upload et je cherche celui de la barre si vous avez une idée aidez moi
      1. Si tu vas plus vite en téléchargeant un fichier par le ftp que par le http ; est ce que ton hébergeur bride le débit en http dans ce cas là ?

        Sinon dans la logique, je dirais que ce que tu souhaites faire comme système c'est que l'utilisateur envoi directement en http sur un ftp sans utiliser un système de dossier temporaire.

        Niveau sécurité ca peut poser problème. Que le formulaire soit en java ou flash , ca reviendra au même soucis :
        Si celui qui envoi le fichier est un utilisateur averti, il pourra facilement (d'après moi), récupérer les identifiants de connexion ftp et tout ce qui vas avec ...

        Le plus "secure" d'après moi est l'envoi en http et non en ftp direct. Ou au moins utiliser un système tampon mais ca reviendrait au meme que le move_uploaded_file().

        Eventuelle solution : mettre en place un accès FTP spécifique avec droit d'upload uniquement.
        1. "Le même mais je n'ai pas la vitesse sur l'upload par http..."

          Oui donc en fait pas d'intérêt sur ce coup là...

          "pour faire ça je vais voir si il n'y a pas moyen de passer par flash ou peut être java mais j'ai l'impression que les application java sont plus lourde... en plus je ne connais pas encore ce langage."

          A ta place j'éviterais Java... cela oblige le poste client à avoir l'environnement java installé sur le pc... ce n'est pas tout le monde qui en est équipé, même si c'est gratuit. Pour Flash je sais qu'il existe des choses bien faites, avec barre de progression, multi-upload, bref sur ce côté là il y a aussi des choses à faire... mais bon c'est pareil... tous les navigateurs n'en sont pas équipés, mais une grande majorité le sont car il est tout de même plus courant !!

          Bon courage pour ton projet ! et bonne nuit ;-)
          1. le même mais je n'ai pas la vitesse sur l'upload par http...

            pour faire ça je vais voir si il n'y a pas moyen de passer par flash ou peut être java mais j'ai l'impression que les application java sont plus lourde... en plus je ne connais pas encore ce langage.
            1. "Pour la vitesse de connexion"

              Effectivement, je n'y avais pas pensé... et du coup cela devient très intéressant... pour le download en tout cas...

              Et pour le up ?? tu y vois un avantage particulier ?
              1. pour la vitesse de connexion,

                quand je prend un fichier avec filezilla ca télécharge à 800ko/s en moyenne alors que quand je le prend en http avec un navigateur ca télécharge à 200Ko/s en moyenne
                1. Désolé j'étais devant la TV :-) !!

                  "D'accord mais le fichier téléchargé le sera en "local" sur le serveur qui supporte le php pas sur le PC"

                  Arf oui exact... j'ai regardé brièvement la fonction, et je n'en ai pas eut l'utilité personnellement jusqu'à maintenant... par conséquent je n'avais pas vu ce côté subtil !! Bien vu !

                  "download en ftp sécurisé, regarde sur le site que je t'ai donné tu peux rajouter un login dans le lien et que le mot de passe soit demandé dans une fenêtre"

                  C'est vrai aussi... pour se connecter à un serveur FTP, l'adresse est la suivante :

                  ftp://nomdutilisateur:motdepasse@ftp.lenomdusite.fr

                  On peut s'attendre à une URL du type :

                  http://ftp.uni-koeln.de/...

                  Enfin un truc dans le genre...

                  Mais au final, quel intérêt de passer par ce système en FTP ? Les liens sont les mêmes pour le down, et pour le up ça passe par un formulaire aussi... donc... quel est l'intérêt final de la chose ?? Economiser de la bande passante en pompant sur le FTP ??

                  1. upload:

                    en HTTP puis soit on déplace le fichier temporaire par move_uploaded_file

                    ou par le script ftp donné plus haut

                    download en ftp sécurisé, regarde sur le site que je t'ai donné tu peux rajouter un login dans le lien et que le mot de passe soit demandé dans une fenêtre

                    je ne me souviens plus bien il ya longtemps que j'ai bossé la dessus mais c'est une piste
                    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. 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. 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. d'accord mais le fichier téléchargé le sera en "local" sur le serveur qui supporte le php pas sur le PC
                            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. "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. ce n'est pas possible alors?

                                  mais dans l'autre sens serveur >>> ordi ?
                                  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. 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
                                      • 2