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

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


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

大部分代码都属于juliomalegriadjango-chunked-upload,我要感谢他提供了这个很棒的包。

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

许可证:MIT-Zero

演示

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

安装

通过PIP安装:

pip install django-chunk-upload

然后将其添加到djangoINSTALLED_APPS

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

典型用法

  1. 初始post请求被发送到链接到ChunkUploadView(或任何子类)的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重复发布后续块,以标识上载到链接到ChunkUploadView(或任何子类)的url。示例:
{
    "upload_id": "5230ec1f59d1485d9d7974b853802e31",
    "my_file": <File>
}
  1. 服务器将继续使用upload_id、当前offset和过期日期(expires)响应。
  2. 最后,当上传完成时,post请求被发送到链接到ChunkUploadCompleteView(或任何子类)的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(错误请求)。

设置

将这些变量添加到项目设置中以覆盖它们。

DJANGO_CHUNK_UPLOAD_EXPIRATION_DELTA

  • 创建后多久,上载将过期。
  • 默认值:datetime.timedelta(days=1)

DJANGO_CHUNK_UPLOAD_PATH

  • 在完成之前将存储上载文件的路径。
  • 默认值:'chunk_uploads/%Y/%m/%d'

DJANGO_CHUNK_UPLOAD_TO

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

DJANGO_CHUNK_UPLOAD_STORAGE_CLASS

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

DJANGO_CHUNK_UPLOAD_ABSTRACT_MODEL

DJANGO_CHUNK_UPLOAD_NULL_USER

  • 定义ChunkUpload模型的“user”字段是否可以是NULL的布尔值
  • 默认值:True

DJANGO_CHUNK_UPLOAD_ENCODER

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

DJANGO_CHUNK_UPLOAD_CONTENT_TYPE

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

DJANGO_CHUNK_UPLOAD_MAX_BYTES

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

支架

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

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

推荐PyPI第三方库


热门话题
java连接usb到uart设备到安卓设备>3.1   可以强制Php中的web应用程序与Java中的桌面应用程序一起工作吗?   java为什么自定义系统类加载器不工作?   数组在Java中解析具有多个分隔符的字符串   PMD Java 8德米特定律   JavaSpringMVC表单验证不适用于嵌套的复杂类型   让Eclipse Java组织导入以使用Google checkstyle   java Appium:无法创建新会话   java如何在数组中声明新字段   java如何解决“无法初始化类org.apache.cassandra.config.DatabaseDescriptor”?   java AsyncTask创建socket   java向@CreatedBy添加更多信息   如何在ubuntu中运行包含大量jars依赖项的java文件   java如何使用<s:select>标记并在中休眠来填充下拉列表?   java获取错误:找不到符号变量“level”和“next_level_button”   javaweb应用中基于UI的ajax显示代码流   Java长到MySql   java JvisualVM:奇怪的应用程序行为   ubuntu将Java程序的输出结果保存到一个文件中