使用PHP将文件从FTP服务器直接下载到浏览器

问题描述:

ftp_get()从FTP服务器下载文件并将文件保存到本地服务器。使用PHP将文件从FTP服务器直接下载到浏览器

因此,当我想从FTP服务器下载文件到我的浏览器时,该文件将首先下载到本地服务器,然后下载到浏览器。

这会导致双重带宽。有没有办法直接从FTP下载文件到浏览器?

ftp_get()curl或任何PHP脚本都需要打开流源并将其传递给客户端浏览器。您仍然使用2个流,导致带宽使用率增加一倍。避免这种情况的唯一方法是链接到或让最终用户直接收集文件。

我假设你从私人FTP位置收集文件,传递凭据,并且不希望最终用户拥有这些文件,或者他们不知道它们。但对他们来说,它应该是一个无缝下载。

没有很多很好的方法来做到这一点。在我看来,在终端用户浏览器中通过Flash进行FTP客户端连接是一种方法。您可以动态创建闪存或使闪存收集凭证(加密),然后从最终用户浏览器(在解密凭证后)执行到FTP服务器的连接,并将文件直接下载到最终用户。

+0

我的网站位于服务器1和某个文件位于服务器2,没有解决方案直接从服务器2下载文件到客户端? – adib16

+0

不通过PHP。由于PHP正在脚本化server1,所以请求将来自server1。如果您希望用户从server2下载某些内容,则用户需要连接到server2。 – Twisty

您只需将客户端浏览器重定向到ftp:// URL即可。当FTP站点允许匿名读访问时,这是可行的。大多数(全部)网页浏览器本地支持FTP。

根据工作流程,你要么从PHP代码重定向:

header("Location: ftp://download.example.com/file.pdf"); 

在您直接使用ftp:// URL中的HTML代码:

<a href="ftp://download.example.com/file.pdf">Download</a> 

如果匿名读访问是不允许的,您必须在URL中包含凭据,您可能不想要的凭据。

ftp://username:[email protected]/file.pdf