您在生成的
<a>标记中的链接指向不包含链接文件的Web服务器。
您需要做的是链接到PHP脚本,并为其指定要下载的文件的名称。然后,脚本将从FTP服务器下载文件,并将下载的文件传递回用户(至Web浏览器)。
echo "<a href="download.php?file=".urlenpre($file)."">".htmlspecialchars($file)."</a>";
download.php脚本的一个非常简单的版本:
<?header('Content-Type: application/octet-stream');echo file_get_contents('ftp://username:password@ftp.example.com/path/' . $_GET["file"]);该
download.php脚本使用FTPURL包装器。如果您的Web服务器上不允许这样做,则必须更努力地使用FTP功能。
虽然一个真正正确的解决方案,你应该提供相关文件,像一些HTTP头
Content-Length,
Content-Type和
Content-Disposition。
同样,上面的简单示例将首先将整个文件从FTP服务器下载到Web服务器。只有这样,它才会开始将其流式传输给用户(Web浏览器)。这既浪费时间,又浪费网络服务器上的内存。
有关更好的解决方案,请参阅通过PHP脚本从FTP服务器将文件下载到具有Content-Length标头的浏览器,而不将文件存储在Web服务器上。
您可能还想自动检测
Content-Type,除非您的所有文件都属于同一类型。



