簡體   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