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
写入它。 QBuffer
为 QByteArray
提供了一个 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'
这应该允许您读回数据并根据需要使用,而无需在系统上创建文件。
我正在尝试在 Qt5 中下载文件,但下载后该文件不能位于硬盘上。 澄清一下> 我的应用程序将使用下载的文件来更新某些固件,我不希望下载的更新保留在用户的硬盘上,因为它可能会被盗。
所以,我正在尝试从 QNetworkReply*
制作一个 QFile
,但没有将其保存到硬盘驱动器上的某个路径。
我正在使用 QNetworkAccessManager
下载文件并将数据存储到 QNetworkReply
。我以前总是用QNetworkReply*
做一个QFile
,但现在我做不到了。
我发现 QTemporaryFile
class 文件在使用后立即被删除,但这仍然为用户提供了一些稍后查找文件的选项。
我尝试将 QNetworkReply*
类型转换为 QFile
,但未能成功,似乎 QFile 不能没有 HDD 上的路径。
有没有人知道如何执行此操作以及如何执行此操作?
谢谢大家
再次不确定您的预期最终用例,但由于您的数据小到足以保存在内存中,您可以使用 QByteArray or QBuffer 并从您的 QNetworkReply
写入它。 QBuffer
为 QByteArray
提供了一个 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'
这应该允许您读回数据并根据需要使用,而无需在系统上创建文件。