繁体   English   中英

QFtp无法正常工作

[英]QFtp won't work

我觉得我可能在这里很容易错过一些事情,但是我茫然不知所措。 我有一个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)我分别声明了用户名和密码,然后手动登录之外,其他均相同。 我尝试了这种方式给我带来麻烦,但无济于事。

1)您应在相关说明之前连接信号和插槽。

2)另外,您应该使用带有用户名和密码的登录方法。

因此,您的代码应如下所示:

QString source = "ftp://ftp.myftpserver.com/directoryname/";
QFtp *ftp = new QFtp(this);

connect(ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo)));
connect(ftp, SIGNAL(done(bool)), this, SLOT(finishThisProcess()));

ftp->connectToHost(source);
ftp->login(username, password);
ftp->list();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM