0

在我的项目中,我需要下载一个简单的 .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。

4

1 回答 1

1

我从来没有使用过'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();
于 2013-10-27T05:32:17.127 回答