Qt5:下载文件而不保存到硬盘

Qt5: download a file without saving to HDD

我正在尝试在 Qt5 中下载文件,但下载后该文件不能位于硬盘上。 澄清一下> 我的应用程序将使用下载的文件来更新某些固件,我不希望下载的更新保留在用户的硬盘上,因为它可能会被盗。

所以,我正在尝试从 QNetworkReply* 制作一个 QFile,但没有将其保存到硬盘驱动器上的某个路径。

我正在使用 QNetworkAccessManager 下载文件并将数据存储到 QNetworkReply。我以前总是用QNetworkReply*做一个QFile,但现在我做不到了。

我发现 QTemporaryFile class 文件在使用后立即被删除,但这仍然为用户提供了一些稍后查找文件的选项。

我尝试将 QNetworkReply* 类型转换为 QFile,但未能成功,似乎 QFile 不能没有 HDD 上的路径。

有没有人知道如何执行此操作以及如何执行此操作?

谢谢大家

再次不确定您的预期最终用例,但由于您的数据小到足以保存在内存中,您可以使用 QByteArray or QBuffer 并从您的 QNetworkReply 写入它。 QBufferQByteArray 提供了一个 QIODevice 接口,因此您使用它可能更容易一些。

确保为 read/write 打开 QBuffer。请参阅下面来自 Qt 文档的简单示例,http://doc.qt.io/qt-5/qbuffer.html#details,如下:

QBuffer buffer;
char ch;

buffer.open(QBuffer::ReadWrite);
buffer.write("Qt rocks!");
buffer.seek(0);
buffer.getChar(&ch);  // ch == 'Q'
buffer.getChar(&ch);  // ch == 't'
buffer.getChar(&ch);  // ch == ' '
buffer.getChar(&ch);  // ch == 'r'

这应该允许您读回数据并根据需要使用,而无需在系统上创建文件。