【问题标题】:FTP download file from server directly into clientFTP从服务器直接下载文件到客户端
【发布时间】:2011-08-15 09:19:38
【问题描述】:

我尝试将文件从 FTP 服务器下载到客户端。如果我使用ftp_get,文件被下载到PHP服务器,它可以将输出写入浏览器。所以下载过程是

FTP server -> PHP server -> client

这会使流量翻倍 - 这对下载大文件很不利。有一种方法可以将文件直接写入此处描述的浏览器:Stream FTP download to output - 但无论如何数据都会流经 PHP 服务器,对吗?

有什么方法可以建立这个下载(如果有,怎么做?),还是根本不可能?

FTP server -> client

编辑:它也应该以安全的方式与非匿名 FTP 服务器一起使用。

【问题讨论】:

  • 不,这不适用于受密码保护的服务器。用户必须直接连接到 FTP 服务器,他需要知道密码。

标签: php ftp download


【解决方案1】:

<a href="ftp://server/file.ext">Download the file</a> ;-)

【讨论】:

  • 确实很简单,但如果需要 FTP 登录名/密码则不起作用。
  • 如果登录名/密码是公开的,您可以使用ftp://login:password@server/file.ext 语法
  • 但是如果以这种方式在 HTML 中公开,登录名/密码将毫无用处
【解决方案2】:

尝试下面的代码。

$curl = curl_init();
$file = fopen("ls-lR.gz", 'w');
curl_setopt($curl, CURLOPT_URL, "ftp://ftp.sunet.se/ls-lR.gz"); #input
curl_setopt($curl, CURLOPT_FILE, $file); #output
curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_exec($curl);

谢谢。

【讨论】:

【解决方案3】:

如果客户端可以直接访问相关文件(即不需要秘密用户名或密码),只需将他重定向到该文件:

header('Location: ftp://example.com/foobar');

这将导致客户端直接访问 URL。但是,您无法控制客户端会做什么。浏览器可能只是开始下载文件,但它也可能启动 FTP 客户端或执行您可能关心或不关心的其他事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-20
    • 2014-10-09
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多