直接从服务器下载文件到客户端的FTP方式

3

我想从FTP服务器下载文件到客户端。如果我使用ftp_get,则文件将下载到PHP服务器中,然后可以将输出写入浏览器。因此,下载过程如下:

FTP server -> PHP server -> client

这会使流量翻倍 - 如果下载大文件就很不好。在这里有一种直接将文件写入浏览器的方法:Stream FTP download to output - 但是数据仍然通过PHP服务器流动,我说得对吗?

是否有任何方法可以建立此下载(如果有,如何操作?),或者从根本上说是不可能的?

FTP server -> client

编辑:它也应该可以与非匿名FTP服务器以安全方式配合使用。


不,这对于有密码保护的服务器是行不通的。用户将需要直接连接到FTP服务器,而这需要他知道密码。 - deceze
3个回答

3

<a href="ftp://server/file.ext">下载文件</a> ;-)


1
非常简单,但如果需要FTP登录/密码,则无法正常工作。 - Jan Turoň
如果登录/密码是公开的,您可以使用ftp://login:password@server/file.ext语法。 - Capsule
3
如果登录/密码以这种方式在HTML中公开,那么它们将变得相当无用。 - Jan Turoň

2
如果客户端可以直接访问所需文件(即不需要任何秘密的用户名或密码),只需将其重定向到该文件即可:
header('Location: ftp://example.com/foobar');

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

1

尝试使用以下代码。

$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);

谢谢。


这对我来说似乎是最好的解决方案,我会进行一些测试。你可以指出我找到的原始来源:https://dev59.com/53M_5IYBdhLWcg3w43lt - Jan Turoň

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接