Django 下载功能实现

网站建立后因为使用到了文件下载功能,所以这里记录一下

先看django的官方文档提供了

StreamingHttpResponse类

首先要设定提供下载的文件存放的位置
STATIC_URL = '/static/'
HERE = os.path.dirname(__file__)
MEDIA_ROOT =  HERE+STATIC_URL
os.path.dirname(__file__)会返回当前脚本的完整路径,即settings.py的路径

经过拼接之后的最终路径就是MEDIA_ROOT 即在settings.py的同级目录下的static文件夹,

处于站点的需要我又在static下建立了一个code文件夹,用于分类不同文件,但文件路经可以在views.py中再补充完整

views.py  

from django.http import FileResponse,StreamingHttpResponse
from django.conf import settings
import os
import mimetypes  

  首先补充完整路径名称,name来源与request请求,这里不再展开

path_name='code/'+name
filepath即为最后的可以找到文件的绝对路径
filepath = os.path.join(settings.MEDIA_ROOT, path_name)
发送文件时需要告诉浏览器文件的类型,这里可以用  mimetypes.guess_type(文件位置加名称)[0]
con_type = mimetypes.guess_type(filepath)[0]
构建  StreamingHttpResponse  对象,记住要用 'rb'二进制格式打开
response=StreamingHttpResponse(open(filepath,'rb'),content_type=con_type)
这里传入的参数为文件下载后再浏览器中显示的文件名称。
response['Content-Disposition'] = 'filename=' + name
return response





猜你喜欢

转载自blog.csdn.net/zpy1998zpy/article/details/80201514