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

时间:2011-04-29 09:45:41

标签: php ftp download

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

FTP server -> PHP server -> client

这会增加流量 - 这在下载大文件时很糟糕。有一种方法可以直接将文件写入这里描述的浏览器:Stream FTP download to output - 但是数据仍然通过PHP服务器,我是对的吗?

有没有办法如何建立这个下载(如果是,如何?),或者它原则上是不可能的?

FTP server -> client

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

如果客户端可以直接访问相关文件(即没有必要的秘密用户名或密码),只需将其重定向到它:

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

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

答案 2 :(得分: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);

感谢。