2010-10-22 117 views
1

我有一个FTP文件,我想给它的用户下载。但FTP受密码保护,我想使用PHP对FTP进行身份验证,并在PHP页面中提供链接,以便当用户单击该页面中的任何FTP链接时,应开始下载。提供链接下载到密码保护的FTP

请帮忙。

回答

4

你可以使用PHP's fopen wrappers通过PHP从您的服务器打开FTP位置,并把它传递给用户作为一个正常的HTTP响应:

// 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'); 

正如@Alan提到的,如果FTP服务器是介于在您的网络外部,这会产生额外的流量。您可以将其封装在缓存方案中 - 例如只有在您的Web服务器上没有副本的情况下才能下载,如果是这样,请检查新鲜度。然后,您基本上构建了FTP站点的HTTP镜像,在用户请求它们之前,先将这些文件预提取到缓存中可能会比较谨慎。

+0

这是一个很好的安全方法,但请记住,如果您的网络服务器拥有它们,您可能会遇到带宽限制/成本问题。 – 2010-10-22 11:32:30

+0

通常的免责声明适用:如果FTP服务器无法访问,此代码可能会显示类似的损坏行为(等待连接超时)。 – Piskvor 2010-10-22 11:34:01

+0

@Alan:安全性并不是那么好(FTP只支持纯文本身份验证)。我假定FTP服务器位于附近的某个地方(例如,在只有可信用户可以上传的同一家公司的网络上,并且可以通过webapp下载)。缓存和其他复杂性可能会随意添加:) – Piskvor 2010-10-22 11:35:12