【问题标题】:Download file from FTP server directly to browser with PHP使用 PHP 将文件从 FTP 服务器直接下载到浏览器
【发布时间】:2015-05-04 15:34:01
【问题描述】:

ftp_get() 从 FTP 服务器下载文件并将文件保存到本地服务器。

所以当我想从 FTP 服务器下载文件到浏览器时,文件会先下载到本地服务器,然后再下载到浏览器。

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

【问题讨论】:

    标签: php ftp


    【解决方案1】:

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

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

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

    【讨论】:

    • 我的站点位于服务器 1 和一些文件位于服务器 2。没有解决方案直接从服务器 2 下载文件到客户端吗?
    • 不通过 PHP。由于 PHP 正在编写 server1 的脚本,因此请求将来自 server1。如果你想让用户从 server2 下载东西,用户需要连接到 server2。
    【解决方案2】:

    您所能做的就是将客户端浏览器重定向到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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2015-11-04
      • 1970-01-01
      • 2016-05-01
      相关资源
      最近更新 更多