2010-10-22 14 views
1

J'ai un FTP avec un fichier que je veux donner aux utilisateurs pour le téléchargement. Mais le FTP est protégé par mot de passe et je veux authentifier le FTP en utilisant PHP et rendre les liens disponibles dans une page php afin que lorsque l'utilisateur clique sur l'un des liens FTP de cette page, le téléchargement devrait commencer.Fournir des liens pour le téléchargement de mot de passe protégé FTP

Aidez-nous s'il vous plaît.

Répondre

4

Vous pouvez utiliser PHP's fopen wrappers pour ouvrir l'emplacement FTP par PHP à partir de votre serveur, et le transmettre à l'utilisateur comme une réponse HTTP normale:

// you can use application/octet-stream to force download 
header ('Content-Type: ' . $content_type_of_your_file); 

// open file and pass it to output 
readfile ('ftp://username:[email protected]/path/to/your.file'); 

Comme mentionné @Alan, si le serveur FTP est quelque part En dehors de votre réseau, cela générera du trafic supplémentaire. Vous pouvez envelopper ceci dans un schéma de mise en cache - par ex. seulement télécharger si vous n'avez pas de copie sur votre serveur web, et si vous le faites, vérifiez la fraîcheur. Ensuite, vous construisez essentiellement un miroir HTTP du site FTP, et il peut être prudent de pré-récupérer les fichiers dans votre cache avant qu'ils ne soient demandés par les utilisateurs.

+0

C'est une excellente méthode de sécurité, mais gardez à l'esprit que vous pourriez avoir des problèmes avec les limites/coûts de bande passante, si votre serveur web en a. –

+0

Les clauses de non-responsabilité habituelles s'appliquent: si le serveur FTP est inaccessible, ce code peut présenter un comportement similaire (en attente de la connexion). – Piskvor

+0

@Alan: La sécurité n'est pas vraiment géniale (FTP ne supporte que l'authentification en clair). Je supposais que le serveur FTP se trouve quelque part à proximité (par exemple sur le réseau de la même société où seuls les utilisateurs de confiance pouvaient télécharger, et le téléchargement était possible via webapp). Caching et autre complexité peuvent être ajoutés à volonté :) – Piskvor