FTP从服务器直接下载文件到客户端
我尝试从FTP服务器下载文件到客户端。如果我使用ftp_get
,则该文件被下载到PHP服务器,该服务器可以将输出写入浏览器。所以下载过程是FTP从服务器直接下载文件到客户端
FTP server -> PHP server -> client
这使流量加倍 - 这在下载大文件时不好。有一种方法可以直接将文件写入浏览器,如下所示:Stream FTP download to output - 但数据流经PHP服务器,对吗?
有没有办法建立这个下载(如果是的话,怎么做?),还是原则上不可能?
FTP server -> client
编辑:应该在安全的方式非匿名FTP服务器也工作。
请尝试下面的代码。
$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);
谢谢。
这在我看来是最好的解决方案,我会做一些测试。你可以指出我找到的原始源代码:http://stackoverflow.com/questions/1178425/download-a-file-from-ftp-using-curl-and-php – 2011-04-29 11:39:44
yes.exactly .... thx。 – Chandresh 2011-04-29 11:52:27
如果客户端可以直接访问有问题的文件(即没有秘密的用户名或密码必要),只是他重定向到它:
header('Location: ftp://example.com/foobar');
这将导致客户端直接访问URL。您无法控制客户端将执行的操作。浏览器可能会只是开始下载文件,但它也可能启动FTP客户端或做其他事情,你可能会或可能不关心。
不,这不适用于受密码保护的服务器。用户将不得不直接连接到FTP服务器,为此他需要知道密码。 – deceze 2011-04-30 00:22:34