Forcer un download sur un lien ftp

Titou
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 09:58

Bonjour,

Après avoir lu la FAQ sur la méthode pour forcer le download d'un fichier, je l'ai appliqué. Cela fonctionne très bien. Mon but est de pouvoir, via la page web, forcer le download de fichiers provisoires sur un serveur ftp, avec des comptes créés à la volée, et donc provisoires aussi.

Voici le code pour l'instant (reprenant la FAQ) :

Code : Tout sélectionner

forceDownload.php : <?php $file = $_GET['file']; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file) ); header('Accept-Ranges: bytes'); header('Content-Length: '.filesize($file) ); readfile($file); ?>
J'apelle donc cette page pour chacun de mes liens avec :

Code : Tout sélectionner

<a href="forceDowload.php?file=ftp://login_provisoire:mdp_provisoire@host_name/nom_fichier">lien</a>
Ce que je souhaite savoir, c'est si cette méthode effectue bien le téléchargement direct sur le ftp, sans passer par le serveur web. En effet le but est de permettre d'une manière simple de télécharger sur un ftp des fichiers, de manière provisoire. Imaginons que le fichier est un iso de dvd, alors est-ce que les 4.7 Go seront copiés en temporaire sur le serveur web avant d'être envoyé à l'utilisateur ou non ? (puisque avec des tailles pareilles le serveur plantera bien sur)

En vous remerciant,

Titou

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 mai 2008, 20:39

C'est une mauvaise méthode qui fait effectivement intervenir le serveur Web comme lecteur intermédiaire entre le client et le serveur FTP. Ce qui recouvre le concept réel de FTP et surcharge le serveur Web pour des prunes.

Il suffirait de faire pointer le lien hypertexte directement s ur l'adresse FTP.

La méthode du forcing d'un download est intéressente justement dans le cas d'absence d'un serveur FTP et quand on souhaite contrôler d'une façon personnalisée le téléchargement.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène