将大文件以多个块的形式上载到django,如果上载被中断,可以继续。
django-chunk-upload的Python项目详细描述
这个简单的django应用程序允许用户将大文件分块上传到django,如果上传被中断,可以继续上传。
大部分代码都属于juliomalegria的django-chunked-upload,我要感谢他提供了这个很棒的包。
此应用程序打算由Sebastian Tschan(documentation)使用JQuery-File-Upload。
许可证:MIT-Zero。
演示
如果您想看到一个使用这个模块的非常简单的django演示项目,请查看django-chunk-upload-demo。
安装
通过PIP安装:
pip install django-chunk-upload
然后将其添加到djangoINSTALLED_APPS:
INSTALLED_APPS=(# ...'django_chunk_upload',)
典型用法
- 初始post请求被发送到链接到ChunkUploadView(或任何子类)的url,其中包含文件的第一个块。块文件的名称可以在视图中重写(类属性field_name)。示例:
{"my_file": <File>}
- 作为回报,服务器的响应为upload_id、当前的offset以及上载何时过期(expires)。示例:
{ "upload_id": "5230ec1f59d1485d9d7974b853802e31", "offset": 10000, "expires": "2013-07-18T17:56:22.186Z" }
- 使用upload_id重复发布后续块,以标识上载到链接到ChunkUploadView(或任何子类)的url。示例:
{ "upload_id": "5230ec1f59d1485d9d7974b853802e31", "my_file": <File> }
- 服务器将继续使用upload_id、当前offset和过期日期(expires)响应。
- 最后,当上传完成时,post请求被发送到链接到ChunkUploadCompleteView(或任何子类)的url。此请求必须包含upload_id和md5校验和(十六进制)。示例:
{ "upload_id": "5230ec1f59d1485d9d7974b853802e31", "md5": "fc3ff98e8c6a0d3087d515c0473f8677" }
- 如果一切正常,服务器将使用状态代码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
- 定义ChunkUpload模型是否抽象的布尔值(what does abstract model mean?)。
- 默认值:True
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。我很乐意帮助你!:-)