跳转到主要内容

将大文件分块上传到Django,中断上传后可继续上传。

项目描述

这个简单的django应用程序允许用户将大文件分块上传到Django,中断上传后可继续上传。

此应用程序旨在与JQuery-File-Upload配合使用,由Sebastian Tschan开发(文档)。

许可证: MIT-Zero

演示

如果您想查看使用此模块的非常简单的Django演示项目,请查看django-chunked-upload-demo

安装

通过pip安装

pip install django-chunked-upload

然后将其添加到您的Django INSTALLED_APPS

INSTALLED_APPS = (
    # ...
    'chunked_upload',
)

典型用法

  1. 首先向链接到 ChunkedUploadView(或任何子类)的URL发送一个初始POST请求,附带文件的第一个块。块文件的名称可以在视图中被覆盖(类属性 field_name)。示例

{"my_file": <File>}
  1. 作为回应,服务器会返回响应,包含 upload_id,当前 offset 以及上传何时会过期(expires)。示例

{
    "upload_id": "5230ec1f59d1485d9d7974b853802e31",
    "offset": 10000,
    "expires": "2013-07-18T17:56:22.186Z"
}
  1. 使用upload_id重复POST后续块,以标识与ChunkedUploadView(或任何子类)关联的URL上的上传。示例

{
    "upload_id": "5230ec1f59d1485d9d7974b853802e31",
    "my_file": <File>
}
  1. 服务器将继续以upload_id、当前offset和过期日期(expires)响应。

  2. 最后,上传完成后,将向与ChunkedUploadCompleteView(或任何子类)关联的URL发送POST请求。此请求必须包含upload_id和MD5校验和(十六进制)。示例

{
    "upload_id": "5230ec1f59d1485d9d7974b853802e31",
    "md5": "fc3ff98e8c6a0d3087d515c0473f8677"
}
  1. 如果一切正常,服务器将以状态码200响应,并在get_response_data方法中返回数据(如果有)。

可能的错误响应

  • 用户未认证。服务器响应403(禁止)。

  • 上传已过期。服务器响应410(已消失)。

  • upload_id与任何上传不匹配。服务器响应404(未找到)。

  • 在指定的键中找不到任何块文件。服务器响应400(错误请求)。

  • 请求不包含Content-Range头。服务器响应400(错误请求)。

  • 文件大小超出限制(如果指定)。服务器响应400(错误请求)。

  • 偏移量不匹配。服务器响应400(错误请求)。

  • md5校验和不匹配。服务器响应400(错误请求)。

设置

将这些变量之一添加到您的项目设置中,以覆盖它们。

CHUNKED_UPLOAD_EXPIRATION_DELTA

  • 上传创建后多长时间过期。

  • 默认值:datetime.timedelta(days=1)

CHUNKED_UPLOAD_PATH

  • 上传文件在完成前将存储的路径。

  • 默认值:'chunked_uploads/%Y/%m/%d'

CHUNKED_UPLOAD_TO

  • upload_to用于Model的FileField。

  • 默认值:CHUNKED_UPLOAD_PATH + '/{{ instance.upload_id }}.part'

CHUNKED_UPLOAD_STORAGE_CLASS

  • 存储系统(应为类)。

  • 默认值:None(使用默认存储系统)

CHUNKED_UPLOAD_ENCODER

  • 用于编码响应数据的函数。接收一个字典并返回一个字符串。

  • 默认值:DjangoJSONEncoder().encode

CHUNKED_UPLOAD_CONTENT_TYPE

  • 响应数据的Content-Type。

  • 默认值:'application/json'

CHUNKED_UPLOAD_MAX_BYTES

  • 可以上传的数据量(以字节为单位)。None表示无限制。

  • 默认值:None

CHUNKED_UPLOAD_MODEL_USER_FIELD_NULL

  • ChunkedUpload模型的user字段的null选项的值

  • 默认值:True

CHUNKED_UPLOAD_MODEL_USER_FIELD_BLANK

  • ChunkedUpload模型的user字段的blank选项的值

  • 默认值:True

支持

如果您发现任何错误或想提出新功能,请使用问题跟踪器。我会很高兴帮助您!:-)

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django-chunked-upload-2.0.0.tar.gz (23.3 kB 查看哈希值)

上传时间 源代码

构建分发版

django_chunked_upload-2.0.0-py3-none-any.whl (12.4 kB 查看哈希值)

上传时间 Python 3

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面