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





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值