首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QFtp下载单个.txt

使用QFtp下载单个.txt
EN

Stack Overflow用户
提问于 2012-07-09 05:48:27
回答 2查看 1.3K关注 0票数 0

我和QFtp有点问题。我想从我的服务器下载一个只有一行(8字节)的.txt文件,所以我写了以下代码,但它不起作用。在folder1目录中创建了文件"actions.txt“。我可以在客户端很好地看到它的大小。但该文件未被写入。我收到一个空文件。

代码语言:javascript
复制
QFile* actionFile = new QFile("action.txt");
QFtp *ftp = new QFtp(parent);

void Dialog::getActionFile() 
{ 
    actionFile->open(QIODevice::WriteOnly);
    ftp->connectToHost("mydomain.de"); 
    ftp->login("user", "pw"); 
    ftp->cd("folder1"); 
    ftp->get("action.txt",actionFile); 
    ftp->close(); 
    actionFile->close(); 
}

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-09 09:32:41

QFtp的几种方法的文档中写道:

函数不阻塞,立即返回。命令被调度,并且其执行是异步执行的。该函数返回由commandStarted()commandFinished()传递的唯一标识符。

因此,您需要等待适当的信号发出。

请注意,您也可以使用QNetworkRequest来请求整个ftp (我认为即使在URL中包含用户名和密码)来下载文件。

票数 1
EN

Stack Overflow用户

发布于 2012-07-09 12:38:09

我解决了我的问题。每次发出commandFininshed信号时,我都会处理一个步骤。如下所示:

代码语言:javascript
复制
void MainWindow::ftpCommandFinished(int id, bool error)
{
    static bool flag = false;
    if(ftp->currentCommand() == QFtp::ConnectToHost)
        checkUpdate();
    if(ftp->currentCommand() == QFtp::Get)
    {
        file->close();
        if(error)
        {
            QMessageBox::warning(this, "Erro!", ftp->errorString());
            deleteLater();
            return;
        }
        if(!flag)
            checkVersion();
        else{
            delete ftp, file;
            ftp = 0; file = 0;
        }
        flag = true;
    }
}

标志变量的原因是需要对程序进行进一步解释的其他原因,因此我不会继续下去。

谢谢你的帮助。不知何故,这对我帮助很大。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11386987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档