将大文件以多个块的形式上载到django,如果上载被中断,可以继续。

django-chunked-upload的Python项目详细描述


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

此应用程序打算由Sebastian Tschandocumentation)使用JQuery-File-Upload

许可证:MIT-Zero

演示

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

安装

通过PIP安装:

pip install django-chunked-upload

然后将其添加到djangoINSTALLED_APPS

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

典型用法

  1. 初始post请求被发送到链接到ChunkedUploadView(或任何子类)的url,其中包含文件的第一个块。块文件的名称可以在视图中重写(类属性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重复发布后续块,以标识上载到链接到ChunkedUploadView(或任何子类)的url。示例:
{
    "upload_id": "5230ec1f59d1485d9d7974b853802e31",
    "my_file": <File>
}
  1. 服务器将继续使用upload_id、当前offset和过期日期(expires)响应。
  2. 最后,当上传完成时,post请求被发送到链接到ChunkedUploadCompleteView(或任何子类)的url。此请求必须包含upload_idmd5校验和(十六进制)。示例:
{
    "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

  • 上载到要在模型的文件字段中使用的
  • 默认值:CHUNKED_UPLOAD_PATH + '/{{ instance.upload_id }}.part'

CHUNKED_UPLOAD_STORAGE_CLASS

  • 存储系统(应为类)。
  • 默认值:None(使用默认存储系统)

CHUNKED_UPLOAD_ABSTRACT_MODEL

CHUNKED_UPLOAD_ENCODER

  • 用于对响应数据进行编码的函数。接收dict并返回字符串。
  • 默认值:DjangoJSONEncoder().encode

CHUNKED_UPLOAD_CONTENT_TYPE

  • 响应数据的内容类型。
  • 默认值:'application/json'

CHUNKED_UPLOAD_MIMETYPE

  • 已弃用,请改用CHUNKED_UPLOAD_CONTENT_TYPE

CHUNKED_UPLOAD_MAX_BYTES

  • 可上载的最大数据量(字节)。None表示没有限制。
  • 默认值:None

支架

如果您发现任何错误或希望提出新功能,请使用issues tracker。我很乐意帮助你!:-)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库