django - 让用户使用 Django 在服务器中下载大文件的最佳方式
问题描述
我正在为实验制作一个 Django 应用程序,它将为用户提供能够将非常大的图像文件下载到服务器中的特定目录的可能性。
我有一个 PoC 的工作,用户看到一个按钮点击它,下载过程开始。我已将下载过程放入views.py
其中,这意味着它在访问指定的 URL 时发生。
负责下载部分的代码类似如下:
with open(loc, "wb") as f:
response = s.get(pos, stream=True)
total_length = response.headers.get('content-length')
if total_length is None:
f.write(response.content)
else:
dl = 0
total_length = int(total_length)
for data in response.iter_content(chunk_size=4096):
dl += len(data)
f.write(data)
问题在于,对于某些 > 500MB 的图像,该过程需要相当长的时间,并且存在几个问题,例如如果用户关闭应用程序,或者单击离开然后过程停止。
我怎样才能做到这一点,以便用户访问该页面并单击该按钮,并且下载过程在后台开始,而无需将用户绑定到该页面。
也可能创建另一个端点,可以更新用户关于下载过程的状态。
请随时分享任何想法或想法。
解决方案
推荐阅读
- reactjs - 如何访问 React State 的索引
- python - 旋转图像以在底部显示 MRZ 代码 - Python
- javascript - 对 JavaScript 异步函数感到困惑
- r - 如何按值将升序数字赋予数据框中的行
- java - 使用 MongoTemplate 和 Query API 从可用数组对象列表中仅获取匹配的数组对象
- abp - 在 Abp 框架中为 AbpTenant 添加额外的属性
- verilog - Verilog 对于 $readmemb 中未指定的高位的默认值是多少?
- python - Pexpect:无法写入 STDIN — 为什么?
- sql - 如何在克隆 Twitter 网站中实现(推文或帖子被删除)?
- node.js - Angular CLI 10 ng build --prod 发出空行