每当有人单击链接时,我的插槽就会被调用,我知道文件在那里,因为我可以检索文件名和字节数,只是不确定在调用 QFileDialog 后如何保存它: :获取保存文件名?我知道如果用户决定更改它,我会得到文件的名称,但我如何获得他们决定保存文件的位置,然后将其写入该位置。
注意:他们将下载的文件是 word 文档,这有什么区别吗?
void MainWindow::unsupportedContent(QNetworkReply *reply) {
qDebug() << "Left click - download!";
qDebug() << "Bytes to download: " << reply->bytesAvailable();
QString str = reply->rawHeader("Content-Disposition");
QString end = str.mid(21);
end.chop(1);
qDebug() << "string: " << end;
qDebug() << "File name: " << reply->rawHeader("Content-Disposition");
qDebug() << "File type: " << reply->rawHeader("Content-Type");
QString defaultFileName = QFileInfo(end).fileName();
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), defaultFileName);
if (fileName.isEmpty()) return;
QFile *file = new QFile(fileName);
file->open(fileName);
file->write(reply->read(reply->bytesAvailable()));
file->close();
}
最佳答案
今天我在另一篇文章中对其进行了解释,因此我将在此处链接该文章:Post 我可以告诉你,你只需要实现一个写入你创建的文件的插槽。并在发出 readyRead() 信号时调用它。
关于c++ - 在Qt中保存下载的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13764842/