Qt5:在不保存到硬盘的情况下下载文件
问题描述:
我试图在Qt5下载文件,但下载后文件不能位于硬盘上。 澄清>我的应用程序将使用下载的文件来更新一些固件,我不希望下载的更新留在用户的硬盘上,因为它可能会被盗。Qt5:在不保存到硬盘的情况下下载文件
所以,我试图从QNetworkReply*
作出QFile
,但没有将它保存到硬盘上的某个路径。
我正在使用QNetworkAccessManager
下载文件并将数据存储到QNetworkReply
。我总是用作为QNetworkReply*
,但现在我无法做到这一点。
我发现了QTemporaryFile
类,其中一个文件在使用后立即被删除,但仍然留给用户一些选项以便稍后查找文件。
我试着将QNetworkReply*
作为QFile
进行类型转换,但没有设法让它工作,似乎QFile不能没有硬盘上的路径。
有没有人有任何想法如何做到这一点,以及如何?
谢谢大家。
答
再次不确定您的预期最终用例,但由于您的数据足够小以容纳内存,您可以使用QByteArray或QBuffer并从您的QNetworkReply
中写入。 QBuffer
为QByteArray
提供了QIODevice
接口,因此您可能更容易处理。
请务必打开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'
这应该让你读回的数据,并根据需要在不创建系统上的文件使用。
这个文件有多大?你打算如何处理它的内容? – Matthew 2015-04-06 17:58:36
Rorschach 2015-04-06 18:14:00