django实现文件的上传与下载

django实现文件上传

1、文件上传所在的表单需要满足两个条件

  • 提交方式必须是post
  • 表单必须提供一个 enctype 属性,并且该值必须为 multipart/form-data
  • multipart/form-data 代表以 流 的形式 提交 表单的数据

2、在 django 中,接收文件对象 request.FILES

file = request.FILES.get(“key”)

file 常见的方法有那些?

  • read() : 把文件读取并放入一个 流中,是一次性读取完成,适合于小图片
  • chunks() : 以块的方式读取一个文件,适合于 大文件的读取

file 常见的属性有哪些?

  • name : 文件名
  • size : 文件大小
  • content_type : 文件类型

django 实现文件下载

1、通过 response = HttpResponse(bytes)

HttpResponse可以实现下载小文件

2、设置下载的头信息

response["Content-Disposition"] = "attachment;filename=文件名"
如果要实现预览效果 (图片、文本文件才支持预览)
response["Content-Disposition"] = "inline;filename=文件名"

3、设置下载的头信息

response["Content-Type"] = "文件的类型"

4、设置下载的头信息

response["Content-Length"] = 文件的大小

下载解决 中文乱码的问题

from django.utils.http import urlquote

response["Content-Disposition"] = "attachment;filename=urlquote(文件名)"

文件的读写可以用with open 方式是流的方式 在下载时为了方式文件夹重名可以使用uuid

uuid的使用

import uuid
filename=uuid.uuid4().hex

你可能感兴趣的:(django实现文件的上传与下载)