0

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

所以,我试图QFileQNetworkReply*但没有将它保存到硬盘驱动器上的某个路径。

我正在使用下载文件QNetworkAccessManager并将数据存储到QNetworkReply. QFile我以前总是用with做 a QNetworkReply*,但现在我不能这样做了。

我找到了QTemporaryFile在使用文件后立即删除文件的类,但这仍然给用户留下了一些稍后查找文件的选项。

我尝试将其类型转换QNetworkReply*QFile,但未能使其正常工作,似乎 QFile 不能没有硬盘上的路径。

有谁知道如何做到这一点,以及如何做到这一点?

感谢大家。

4

1 回答 1

2

再次不确定您的预期最终用例,但由于您的数据足够小以保存在内存中,您可以使用QByteArrayQBuffer并从QNetworkReply. QBuffer为您提供了一个QIODevice接口,QByteArray因此您使用起来可能会更容易一些。

确保打开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'

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

于 2015-04-06T18:38:06.753 回答