QFtp无法正常工作

时间:2016-03-14 14:25:36

标签: qt visual-studio-2008 qftp

问候语

我尝试使用QT 4.8VS 2008下载文件,但我不能,它一直都会失败。

我使用以下代码从FTP服务器下载文件。

void FTP::download(QString strFileName, QString strFTPFileName)
{
    QFile * file = new QFile(strFileName);
    if (m_fFile->open(QIODevice::ReadWrite))
    {
        QString strFtpServerIPAddress("192.168.7.10");
        QString strFtpServerPortNumber("21");
        QString strFtpUserName("admin");
        QString strFtpPassword("admin");
        QString strFtpFolderPath("\outgoing\");
        qint16 iFtpPort = 21;

        QFtp * ftp = new QFtp();    
        connect(ftp, SIGNAL(stateChanged(int)),SLOT(onStateChanged(int)));
        connect(ftp, SIGNAL(done(bool)),SLOT(onDone(bool)));
        connect(m_objFtp, SIGNAL(commandFinished(int, bool)),SLOT(onCommandFinished(int, bool)));

        int iConnectToHostID = ftp->connectToHost(strFtpServerIPAddress, iFtpPort);
        int iLogInID = ftp->login(strFtpUserName, strFtpPassword); 
        int iChangeDirectoryID = ftp->cd(strFtpFolderPath);

        QFileInfo fileInfo(strFTPFileName);
        QString strFileNameOnly(fileInfo.fileName());
        int iOperationID = ftp->get(strFileNameOnly, file);

        QEventLoop loop;
        connect(this, SIGNAL(finished()), &loop, SLOT(quit()));
        loop.exec();

        ftp->close();
        file->close();
        delete ftp;
    }
}

void FTP::onDone(bool bError)
{
    ...
    //If "id" (saved from onStateChanged) is equal to "iOperationID", I emit "finished" Signal
    ...
}

我正在检查onCommandFinished个插槽,所有步骤(HostLookup,Connecting,Connected,LoggedIn)完成但没有错误,但完全在get操作中,errortrue,当我通过以下代码获得有关错误的详细信息,

string strReason = QFtp::errorString().toStdString();
int iError = QFtp::error();

strReasonUnknown erroriError0

知道这里出了什么问题吗?

先谢谢

编辑1

我发现了问题。有些我怎么不能从根目录下载文件,如果我尝试在另一个目录下载文件,它工作。

在我的代码中,我检查strFtpFolderPath是否为空或等于“。”,在这种情况下,我用ftp->cd("/")更改目录,我将其设置为给定路径。

知道为什么我无法从根目录下载文件?

0 个答案:

没有答案