[英]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.