如果流式下载的报告大小不准确会发生什么?

问题描述 投票:0回答:1

我在 django 项目中实现了一个下载视图,它构建了一个 zip 存档并动态传输它。

存档中包含的文件是 1 个

tsv
文件和任意数量的
xml
(来自一组搜索结果),这些文件被组织到一系列目录中。

下载可以,但没有任何进展。 我们测试了一个小下载 (47Mb) 和一个大下载 (3Gb)。

我认为最好有一个进度条,让用户了解下载需要多长时间,但是,从我读到的内容来看,预测 zip 文件的大小是很棘手/容易发生的-不准确,所以我想知道(因为我对 zip 文件生成非常缺乏经验[更不用说流式下载了])...

  • 如果我提供估计的大小,从用户角度来看下载会发生什么? 具体来说,下载会失败吗?
    • 如果预估尺寸太大会发生什么?
    • 如果预估尺寸太小会怎样?

我应该考虑这个问题空间的替代解决方案吗?

django download zip streaming
1个回答
0
投票

阿萨拉姆·阿莱库姆。

本案中的行为并不多。有一些:

如果您在响应标头中指定大致大小,下载仍将开始,并且大多数浏览器或下载管理器将根据该值显示进度。

太大:进度条可能会显示 100%,直至下载完成。这可能会让用户感到困惑,但下载仍然会正确完成。 太小:进度可能会超过100%,也可能会比较混乱,但不影响下载。

我推荐的解决方案:

使用分块传输编码。这是一种更可靠的分块传输大文件的方法。数据以固定块的形式传输,大容量传输更加便捷高效。然而,一个缺点是完成百分比和总文件大小可能无法准确显示。

使用AJAX请求获取状态。实现一个单独的 API 端点,该端点将返回存档和下载的当前状态,例如,已将多少文件添加到存档中。在客户端上,您可以制作一个进度条,定期请求此 API。

© www.soinside.com 2019 - 2024. All rights reserved.