Qt无法使用QNetworkAccessManager下载文件

时间:2013-10-27 05:21:29

标签: c++ qt http qnetworkaccessmanager qnetworkreply

在我的项目中,我需要下载一个简单的.txt文件。我创建了一个基于url下载文件的函数:

void MainWindow::downloadFile(const QString &url, const QString &aPathInClient)
{
    QNetworkAccessManager* m_NetworkMngr = new QNetworkAccessManager(this);
    QNetworkReply *reply = m_NetworkMngr->get(QNetworkRequest(QUrl(url)));
    QEventLoop loop;
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();
    QUrl aUrl(url);
    QFileInfo fileInfo=aUrl.path();

    QFile file(aPathInClient+"\\"+fileInfo.fileName());
    file.open(QIODevice::WriteOnly);
    file.write(reply->readAll());
    delete reply;
}

运行程序时,使用正确的文件名创建文件,但文件为空。如果连接到网页,则只能通过我的程序获取文件名。我忘记了什么?我在构建时没有错误,并且包含了所有必要的库。

谢谢:)

编辑:

一切都很好,我的问题是我的链接使用https而不是http。

1 个答案:

答案 0 :(得分:0)

我从未使用'write'函数写入QFile。尝试以下方法:

QFile file(aPathInClient+"\\"+fileInfo.fileName());
file.open(QIODevice::WriteOnly);
QTextStream out(&file);
out << "This file is generated by Qt\n";

编辑:以上只是为了检查文件是否正确写入。现在,经过验证,您可以尝试:

out << reply->readAll();