我正在为我们的客户构建一个基于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);
是否有任何解决方法可以使其按预期运行?我很难理解如何解决这个问题,这似乎是一个错误,而不是限制。
答案 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包装器中以这种方式指定凭证是完全有效的。