使用PHP将文件从FTP服务器直接下载到浏览器
问题描述:
ftp_get()
从FTP服务器下载文件并将文件保存到本地服务器。使用PHP将文件从FTP服务器直接下载到浏览器
因此,当我想从FTP服务器下载文件到我的浏览器时,该文件将首先下载到本地服务器,然后下载到浏览器。
这会导致双重带宽。有没有办法直接从FTP下载文件到浏览器?
答
ftp_get()
或curl
或任何PHP脚本都需要打开流源并将其传递给客户端浏览器。您仍然使用2个流,导致带宽使用率增加一倍。避免这种情况的唯一方法是链接到或让最终用户直接收集文件。
我假设你从私人FTP位置收集文件,传递凭据,并且不希望最终用户拥有这些文件,或者他们不知道它们。但对他们来说,它应该是一个无缝下载。
没有很多很好的方法来做到这一点。在我看来,在终端用户浏览器中通过Flash进行FTP客户端连接是一种方法。您可以动态创建闪存或使闪存收集凭证(加密),然后从最终用户浏览器(在解密凭证后)执行到FTP服务器的连接,并将文件直接下载到最终用户。
答
您只需将客户端浏览器重定向到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
我的网站位于服务器1和某个文件位于服务器2,没有解决方案直接从服务器2下载文件到客户端? – adib16
不通过PHP。由于PHP正在脚本化server1,所以请求将来自server1。如果您希望用户从server2下载某些内容,则用户需要连接到server2。 – Twisty