我觉得我可能在这里遗漏了一些非常容易的东西,但我不知道是什么。我有一个 C++ 函数(使用 Qt 4.7),我需要在其中访问 FTP 服务器上的文件。为此,我进行了以下设置:
QString source = "ftp://username:password@ftp.myftpserver.com/directoryname/";
QFtp *ftp = new QFtp(this);
ftp->connectToHost(source);
connect(ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo)));
connect(ftp, SIGNAL(done(bool)), this, SLOT(finishThisProcess()));
ftp->list();
当我直接在浏览器中输入源代码时,它会正确显示并显示目录中的所有文件。我在程序的其他地方也有另一个 QFtp 实例(不同的变量名)以相同的方式设置;这样可行。但是,有了这个,它只是将目录解释source
为空并立即跳转到finishThisProcess
. 有什么我想念的吗?谢谢!
编辑:这是 ftp 客户端的另一个实例:
ftp2 = new QFtp(this);
QString user = "username";
QString pass = "password";
connect(ftp2, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo)));
connect(ftp2, SIGNAL(done(bool)), this, SLOT(finishThisProcess()));
ftp2->connectToHost("ftp.myftpserver.com");
ftp2->login(user, pass);
ftp2->list();
它与另一个相同,除了a)这个尝试访问更远的目录级别,b)我分别声明了用户名和密码,然后手动登录。我尝试了以这种方式给我带来问题的方法,但无济于事。