【发布时间】:2015-05-04 15:34:01
【问题描述】:
ftp_get() 从 FTP 服务器下载文件并将文件保存到本地服务器。
所以当我想从 FTP 服务器下载文件到浏览器时,文件会先下载到本地服务器,然后再下载到浏览器。
这会导致双倍带宽。有没有办法直接从 FTP 下载文件到浏览器?
【问题讨论】:
ftp_get() 从 FTP 服务器下载文件并将文件保存到本地服务器。
所以当我想从 FTP 服务器下载文件到浏览器时,文件会先下载到本地服务器,然后再下载到浏览器。
这会导致双倍带宽。有没有办法直接从 FTP 下载文件到浏览器?
【问题讨论】:
ftp_get() 或 curl 或任何 PHP 脚本都需要打开源流,并将其传递给客户端浏览器。您仍然使用 2 个流,导致带宽使用量翻倍。避免这种情况的唯一方法是链接到或让最终用户直接收集文件。
我假设您正在从私有 FTP 位置收集文件,传递凭据,并且您不希望最终用户拥有这些或他们不知道它们。然而对他们来说,这应该是一个无缝下载。
没有很多好的方法可以做到这一点。在我看来,在最终用户浏览器中通过 Flash 建立 FTP 客户端连接是一种方法。您可以动态创建 flash 或让 flash 收集凭据(加密),然后从最终用户浏览器执行到 FTP 服务器的连接(解密凭据后)并将文件直接下载给最终用户。
【讨论】:
您所能做的就是将客户端浏览器重定向到ftp:// URL。当 FTP 站点允许匿名读取访问时,这是可行的。大多数(所有)网络浏览器都原生支持 FTP。
根据工作流程,您可以从 PHP 代码重定向:
header("Location: ftp://download.example.com/file.pdf");
在你直接在 HTML 代码中使用ftp:// URL:
<a href="ftp://download.example.com/file.pdf">Download</a>
如果不允许匿名读取访问,您必须在 URL 中包含凭据,这可能是您不希望的。
ftp://username:password@download.example.com/file.pdf
【讨论】: