【发布时间】:2016-11-04 10:19:20
【问题描述】:
我正在为我们的客户构建一个基于 web 的文件管理界面,我试图在不先下载到本地 web 服务器的情况下促进从远程 (FTP) 服务器到客户端的下载。
我发现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);
是否有任何解决方法可以使其按预期运行?我对如何解决这个问题感到困惑,这似乎是一个错误而不是限制。
【问题讨论】:
-
实际上,您使用上面显示的方法首先将文件下载到服务器,然后将其中继到客户端。
-
关于您的具体问题:查看 php 的 ftp 扩展名并使用临时文件。
-
我很抱歉,我应该更清楚。我使用的方法不会导致客户端必须等待下载完成才能开始下载。它只是将其存储在服务器的内存中,而不是将其写入文件。
-
@arkascha 我不认为你在回答这个问题。我很确定 OP 知道该文件没有直接下载到客户端。
-
@BrettPowell “不再有效” 是什么意思?它有什么作用?你得到什么错误(如果有的话)? - 你的代码对我有用!