我试图从FTP服务器(使用FileZilla服务器)下载到我的本地计算机,但我不断收到错误消息
这是我的密码
<?php
// connect and login to FTP server
$ftp_server = "127.0.0.1";
$ftp_username = "myusername";
$ftp_userpass = "mypassword";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
echo "success connect to FTP";
$local_file = "C:\Users\PROSIA\Desktop\test.docx";
$server_file = "C:\Users\PROSIA\Documents\dummyfile.docx";
// download server file
if (ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII))
{
echo "Successfully written to $local_file.";
}
else
{
echo "Error downloading $server_file.";
}
ftp_close($ftp_conn);
这是我得到的错误:
警告:ftp\u get(C:\Users\PROSIA\Desktop est.docx):无法打开流:下载C:\Users\PROSIA\Documents\dummyfile时出错。docx。
我的代码逻辑是$local\u file
是将下载的文件保存到本地计算机的路径,$server\u file
是从FTP服务器下载文件的路径
因此,我对第一个警告“无法打开流”有点困惑,因为文件还不存在,而且它似乎有空白(应该是\Desktop\test.docx,而不是Desktop est.docx)
还有一个问题,我可以不下载就直接阅读吗?
在FTP协议中不能使用远程文件的绝对路径。
FileZilla FTP服务器在其配置中具有映射,将远程文件系统投影到虚拟FTP文件树中。必须使用虚拟文件树的路径。
例如,C:\Users\PROSIA
可以映射到类似于/Users/PROSIA
的内容。在这种情况下,您可以使用:
$server_file = "/users/PROSIA/dummyfile.docx";
很可能您实际上根本没有配置映射。因此,在进行映射之前,您无法真正访问该文件。
首先使用一些GUI FTP客户端连接到FTP服务器,然后尝试找到文件。客户端将向您显示在代码中使用的正确路径。
下一个问题是,您需要启用FTP被动模式。如果您在NAT上的防火墙后面,默认的主动模式将很难工作。请参阅我关于主动和被动FTP模式所需的网络配置的文章。
要切换到被动模式,请使用ftp\u pasv
功能。
ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
ftp_pasv($ftp_conn, true);
是的,你不需要下载就可以阅读。
看见