问候语
我尝试使用QT 4.8
和VS 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
操作中,error
是true
,当我通过以下代码获得有关错误的详细信息,
string strReason = QFtp::errorString().toStdString();
int iError = QFtp::error();
strReason
为Unknown error
,iError
为0
。
知道这里出了什么问题吗?
先谢谢
编辑1
我发现了问题。有些我怎么不能从根目录下载文件,如果我尝试在另一个目录下载文件,它工作。
在我的代码中,我检查strFtpFolderPath
是否为空或等于“。”,在这种情况下,我用ftp->cd("/")
更改目录,我将其设置为给定路径。
知道为什么我无法从根目录下载文件?