ftp_get()
从FTP服务器下载文件并将文件保存到本地服务器。
因此,当我想将文件从FTP服务器下载到我的浏览器时,该文件将首先下载到本地服务器,然后下载到浏览器。
这会导致双倍带宽。有没有办法直接从FTP下载文件到浏览器?
答案 0 :(得分:2)
ftp_get()
或curl
或任何PHP脚本都需要打开源流,并将其传递给客户端浏览器。您仍然使用2个流,导致带宽使用量增加一倍。避免这种情况的唯一方法是链接或让最终用户直接收集文件。
我假设您从私有FTP位置收集文件,传递凭据,并且您不希望最终用户拥有这些或他们不知道它们。但对于他们来说,它应该是无缝下载。
没有很多好方法可以做到这一点。在我看来,在最终用户浏览器中通过Flash建立FTP客户端是一种方式。您可以动态创建闪存或让闪存收集凭据(加密),然后从最终用户浏览器(解密凭证后)执行与FTP服务器的连接,并将文件直接下载到最终用户。
答案 1 :(得分:0)
您只需将客户端浏览器重定向到ftp://
网址即可。当FTP站点允许匿名读取访问时,这是可行的。大多数(所有)Web浏览器本身都支持FTP。
根据工作流程,您可以从PHP代码重定向:
header("Location: ftp://download.example.com/file.pdf");
在HTML代码中直接使用ftp://
网址:
<a href="ftp://download.example.com/file.pdf">Download</a>
如果不允许匿名读访问,则必须在URL中包含凭据,这可能是您不想要的。
ftp://username:password@download.example.com/file.pdf