Php 列出并从FTP下载单击的文件

Php 列出并从FTP下载单击的文件,php,file,download,ftp,Php,File,Download,Ftp,我有FTP,我需要在上传目录中列出FTP中的所有文件,单击任何列出的文件后,它将从FTP下载特定文件 它在uploads目录中列出我的文件,但当我尝试下载文件时,它会键入“no file” 我的代码: // connect and login to FTP server $ftp_server = "IP"; $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); $login =

我有FTP,我需要在上传目录中列出FTP中的所有文件,单击任何列出的文件后,它将从FTP下载特定文件

它在uploads目录中列出我的文件,但当我尝试下载文件时,它会键入“no file”

我的代码:

    // connect and login to FTP server
$ftp_server = "IP";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, "name", "password");

// list all files in upload directory and with "a" download file from FTP
$target_dir = "uploads/";
$files = ftp_nlist($ftp_conn, $target_dir);
foreach($files as $file) {
    echo "<a href='$file' download>$file</a>";
    echo "<br>";
}
//连接并登录到FTP服务器
$ftp\u server=“IP”;
$ftp_conn=ftp_connect($ftp_server)或die(“无法连接到$ftp_server”);
$login=ftp\u login($ftp\u conn,“名称”,“密码”);
//列出上传目录中的所有文件,以及从FTP下载的“a”文件
$target_dir=“uploads/”;
$files=ftp\u nlist($ftp\u conn,$target\u dir);
foreach($files作为$file){
回声“;
回声“
”; }
生成的
中的链接。如果您的web服务器上不允许这样做,那么您就必须使用FTP功能。看见


虽然要获得真正正确的解决方案,您应该提供一些与文件相关的HTTP头,如
内容长度
内容类型
内容处置

此外,上面的简单示例将首先将整个文件从FTP服务器下载到Web服务器。只有到那时,它才会开始将其流式传输给用户(webbrowser)。这既浪费时间,也浪费了Web服务器上的内存

有关更好的解决方案,请参阅

您可能还希望自动检测
内容类型
,除非您的所有文件都属于同一类型


关于使用网页实现FTP上载的相关问题:

echo "<a href=\"download.php?file=".urlencode($file)."\">".htmlspecialchars($file)."</a>";
<?

header('Content-Type: application/octet-stream');

echo file_get_contents('ftp://username:password@ftp.example.com/path/' . $_GET["file"]);