我已经搜索了几个小时并尝试了很多组合,但到目前为止我的尝试都没有成功。我在远程 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 连接并下载指定的文件。单击链接后直接将副本下载到客户端的计算机上会很棒,但如果我需要先下载到本地服务器,这是一个选项,那么我将在页面加载时清除它。
我尝试过的:我花了几个小时在 google 上搜索 jQuery/ajax 脚本,在单独的文件中尝试函数并向它们传递参数,等等。到目前为止,没有任何效果。虽然我有多种编码语言的经验,但我是 php/js 的新手,所以非常感谢任何帮助!
提前感谢您的宝贵时间。
最佳答案
我知道这是一个旧线程,但我最近不得不做同样的事情。
解决方案:
$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里的文件名字里没有空格!
资源:
关于javascript - 网页 : List remote FTP files via links that download them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28424676/