在我的项目中,我需要下载一个简单的.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。
最佳答案
我从未使用过“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();
关于c++ - Qt 无法使用 QNetworkAccessManager 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614932/