django - 支持使用 HTTP/REST 下载部分文件

标签 django rest http django-rest-framework

我有一个客户端/服务器架构,其中客户端需要定期从服务器下载大文件。假设客户端下载 9Gb 的 10Gb 文件,然后暂时失去互联网连接。当客户端重新连接时,我希望客户端能够下载剩余的 1Gb 文件,而不是需要从头开始重新下载所有内容。

是否有处理此问题的任何平台、库、框架等?如果没有,有人对如何最好地解决这个问题有任何想法吗?

服务器/客户端技术

服务器 - Python/Django/Django REST 框架

客户端 - Android/iOS/c++

当前服务器代码

def post(self, request):
try:
    user = request.user
    file = MyFile.objects.filter(user_id=user)
    response = FileResponse(open(file.path, 'rb'))
    return response
except Exception as e:
    return Response({'status': str(e)}, content_type="application/json")

最佳答案

我没有尝试过,但您可以尝试在文件服务 View 中实现范围 header 支持并尝试一下。浏览器有可能默认发送 header 。

Chrome and range requests

Sample PHP implementation

HTTP range requests

How to make range request

关于django - 支持使用 HTTP/REST 下载部分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947910/

相关文章:

javascript - 如何将 Angular Material 图标资源路径与 Django 模板集成?

python - Django 样板模板代码

python - 导入错误 : No module named context_processors

php - 在 linux 中使用 cURL 上传 http 文件(命令行)

http - 如果 Accept-Encoding 不包含 "Identity"则发送未压缩的?

Jquery ajax从https到http的调用

python - Django聚合--求每个员工的总佣金

java - Spring-data-neo4j 4.0.0 存储库进行多个 REST 调用而不是对它们进行分组

java - 在 REST URL 中传递 JSON 字符串

web-services - 从命令行调用 REST WS