下载 - 在询问用户文件名时如何处理开放式网络连接?

时间:2014-11-17 05:41:57

标签: qt http browser download qtwebkit

我使用QtWebKit编写一个小浏览器(为什么?See the FAQ.)。现在,当用户点击浏览器无法呈现的链接时,我必须下载它,但我得到一个已经是开放连接的网络回复。

现在我想在我知道将文件写到哪里之前询问用户文件名,这就是我的问题所在。到目前为止,我可以想到这些方法:

  • 在输入文件名之前不下载任何内容 - >服务器可能会在几秒钟后关闭连接。
  • 在输入文件名时重新执行请求 - >可能导致很多问题,例如与DRM-like"您可以下载此文件N次"位点。
  • 只需下载到RAM - > RAM可能会很快填满。我这里有一个250 MBit的连接,所以如果我花30秒输入一个文件名,可能会填充一个GB的数据库。
  • 下载到临时文件,直到用户输入文件名,然后将其复制并删除临时文件。

最后一种方法对我来说似乎是最干净的,这似乎也是Firefox / Chrome的作用。然而,我正在努力寻找文档或代码示例(理想情况下是Qt / PyQt)以正确的方式执行此操作,因为可能需要处理一些极端情况。

我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:0)

在阅读了很多关于相关mozilla错误(69938784055690129923的评论后,我得出结论,慢慢下载到RAM就是最好的事情。

我通过在QNetworkReply上设置固定的读取缓冲区大小,然后使用QTimer慢慢读入另一个RAM内缓冲区来实现此目的。

可以找到{PyQt}实现here