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

Qt5:下载文件而不保存到硬盘,qt,casting,qt5,qnetworkaccessmanager,qnetworkreply,Qt,Casting,Qt5,Qnetworkaccessmanager,Qnetworkreply,我正在尝试下载Qt5中的文件,但下载后该文件不得位于硬盘上。 为了澄清,我的应用程序将使用下载的文件更新某些固件,我不希望下载的更新保留在用户的硬盘上,因为它可能被盗 因此,我试图从QNetworkReply*创建QFile,但不将其保存到硬盘上的某个路径 我正在使用QNetworkAccessManager下载一个文件,并将数据存储到QNetworkReply中。我以前总是用QNetworkReply*制作QFile,但现在我做不到了 我找到了QTemporaryFile类,在该类中,文件在使

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

因此,我试图从
QNetworkReply*
创建
QFile
,但不将其保存到硬盘上的某个路径

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

我找到了
QTemporaryFile
类,在该类中,文件在使用后立即被删除,但这仍然让用户有一些以后查找文件的选项

我试着将
QNetworkReply*
作为
QFile
进行打字,但没有成功地实现,似乎QFile在硬盘上不能没有路径

有人知道怎么做吗?怎么做


谢谢大家。

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

确保打开
QBuffer
进行读/写操作。请参见下面Qt文档中的简单示例:


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

此文件有多大?你打算对它的内容做什么?谢谢,我设法把所有下载的东西都放进缓冲区,然后从中读回来。现在我需要弄清楚如何跨不同的插槽发送缓冲区。。。再次感谢。所以,只需在这里发布解决方案。。。我使用了QBuffer类,制作了一个QBuffer*并通过信号和插槽发送它,一切看起来都正常。所有的功劳都归于@Matthew
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'