0

问候

我试图下载文件,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("/")否则我将其设置为给定路径。

知道为什么我不能从根目录下载文件吗?

4

0 回答 0