将FTP文件下载到客户端w / Readfile()

时间:2016-11-04 10:19:21

标签: php download ftp readfile

我正在为我们的客户构建一个基于Web的文件管理界面,我试图从远程(FTP)服务器下载到客户端,而无需先下载到本地Web服务器。

我发现Readfile()可以完全满足需要,完美适用于基于Web的下载以及公共FTP服务器。问题是,当通过FTP URL指定凭据时,它显然不再有效。我在网上找到了其他报告,但到目前为止还没有解决方案或解决方法。

$file_url = 'ftp://username:password@198.2.148.130/198.2.148.130%20port%2025665/server.properties';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url);

是否有任何解决方法可以使其按预期运行?我很难理解如何解决这个问题,这似乎是一个错误,而不是限制。

1 个答案:

答案 0 :(得分:0)

URL中的URL编码空格(%20)似乎是罪魁祸首。

只使用文字空间:

$file_url = 'ftp://username:password@198.2.148.130/198.2.148.130 port 25665/server.properties';

在PHP FTP URL包装器中以这种方式指定凭证是完全有效的。