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