我正在制作一个 php 脚本,旨在在 CLI 中运行,它将帮助我在 ftp 服务器上下载文件。我要告诉你到底哪里出了问题,但在我解释你之前的上下文是什么。
我在一个共享老游戏图像文件的网站上注册。当我们想在这个站点上下载一个文件时,我们必须登录才能检索下载链接。然后,给出的链接是一个 FTP 下载链接。
我使用 Wireshark 捕获了 FTP 连接数据包,并将其与失败的脚本化 FTP 传输进行比较。
所以,.. FTP 服务器接受匿名连接。当我使用浏览器下载文件时,文件的链接是这样的;
ftp://website.url/somefolder/1/foo/bar/SOMEOLDIE.rar
现在,如果我使用 FileZilla 连接到这个 FTP,并通过匿名登录获得访问权限,我会看到一些文件夹,但是当我转到我的 iso 必须位于的“somefolder”时,该文件夹是空的。
看看这张图片,然后我会给你看代码。
现在是代码;
function download_file($url){
echo "Downloading: ".$url;
$ch = curl_init($url);
$fp = fopen("data/output.rar", "w");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_COOKIEFILE, 'data/cookies.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($ch, CURLOPT_FAILONERROR, 1);
//curl_setopt($ch, CURLOPT_FTPLISTONLY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "anonymous:mozilla@example.com");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
//var_dump(curl_getinfo($ch));
//echo curl_error($ch);
curl_close($ch);
fclose($fp);
}
任何人都可以帮助我吗?我不熟悉 curl,我不知道如何告诉 curl 准确发送我想要的命令。
谢谢 !
编辑:看看这个,它完全一样的问题;需要帮助从 FTP 使用 PHP 和 Curl 下载文件