我一直在寻找好几个小时并尝试了很多种组合,但到目前为止我的尝试都没有成功。我在远程FTP服务器上有一个文件夹,其内容我希望显示为网页上的链接。点击链接后,我希望它将该特定文件下载到用户的计算机上。我花了好几个小时尝试使用php和html混合的jQuery / ajax组合。任何帮助都会非常感激!
<?php
$ftp_server = "host info here";
$ftp_user = "user info here";
$ftp_pass = "pw here";
// set up a connection or die
$conn_id2 = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
// try to login
ftp_login($conn_id2, $ftp_user, $ftp_pass);
ftp_pasv($conn_id2, true);
$filelist = ftp_nlist($conn_id2, "/folder/path/here");
foreach ($filelist as $file)
{
echo $file;
echo "<br />";
}
ftp_close($conn_id2);
?>
这是尝试链接文件以供下载之前的代码。这会成功列出文件夹中的所有文件。我不希望每次加载页面时都将所有文件下载到本地服务器,因为它们是大文件,并且有很多文件。我只想通过点击文件名来下载它们。
我尝试的总体思路是将链接文本传递给一个可以再次打开FTP连接并下载指定文件的函数。单击链接将副本直接下载到客户端的计算机上会很棒,但如果我需要先下载到本地服务器,这是一个选项,那么我只需在页面上清除它负荷。
我尝试过的内容:我花了数小时谷歌搜索jQuery / ajax脚本,在单独的文件中尝试函数并将参数传递给它们等等。到目前为止,没有任何工作。虽然我在几种编码语言方面经验丰富,但我对php / js更新,所以非常感谢任何帮助!
提前感谢您的时间。
答案 0 :(得分:0)
我知道这是一个老线程,但我最近不得不做同样的事情。
<强>解决方案:强>
$url = "ftp://ftp.bla.com";
// connect and login to FTP server
$ftp = ftp_connect("ftp.bla.com");
if (!$ftp) die('could not connect.');
// login
$login = ftp_login($ftp, "anonymous", "");
if (!$login) die('could not login.');
// enter passive mode
$passsive = ftp_pasv($ftp, true);
if (!$passsive ) die('could not enable passive mode.');
// get listing
$listing = ftp_nlist($ftp, "/path/to/dir");
foreach($listing as $value){
echo "<a href='$url$value'>", substr($value, strrpos($value, '\\') + 1) ,"</a><br>";
}
这会将文件名显示为链接,如果单击它们,它们将单独下载。
**注意:我的ftp中的文件名称中没有空格!
资源: