我尝试将文件从FTP服务器下载到客户端。如果我使用ftp_get
,则将文件下载到PHP服务器,该服务器可以将输出写入浏览器。所以下载过程是
FTP server -> PHP server -> client
这会增加流量 - 这在下载大文件时很糟糕。有一种方法可以直接将文件写入这里描述的浏览器:Stream FTP download to output - 但是数据仍然通过PHP服务器,我是对的吗?
有没有办法如何建立这个下载(如果是,如何?),或者它原则上是不可能的?
FTP server -> client
编辑它也应该以安全的方式使用非匿名FTP服务器。
答案 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);
感谢。