Django_文件下载
Posted yebaofang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django_文件下载相关的知识,希望对你有一定的参考价值。
一、小文件下载
1、视图 views.py
三种方式实现,任选其一
(1)使用HttpResponse
# 导入模块
from django.shortcuts import HttpResponse def download(request): file = open(‘crm/models.py‘, ‘rb‘) response = HttpResponse(file) response[‘Content-Type‘] = ‘application/octet-stream‘ #设置头信息,告诉浏览器这是个文件 response[‘Content-Disposition‘] = ‘attachment;filename="models.py"‘ return response
(2)使用StreamingHttpResponse
from django.http import StreamingHttpResponse def download(request):
file=open(‘crm/models.py‘,‘rb‘) response =StreamingHttpResponse(file) response[‘Content-Type‘]=‘application/octet-stream‘ response[‘Content-Disposition‘]=‘attachment;filename="models.py"‘ return response
(3)使用FileResponse
from django.http import FileResponse def download(request): file=open(‘crm/models.py‘,‘rb‘) response =FileResponse(file) response[‘Content-Type‘]=‘application/octet-stream‘ response[‘Content-Disposition‘]=‘attachment;filename="models.py"‘ return response
2、添加路由 urls.py
配置一个下载的路径
url(r‘^download/‘,views.download,name="download"),
3、模板 templates 的修改
配置一个 a 标签,跳转地址配置要跳转的下载路径(对应的视图)
<div class="col-md-4"><a href="{% url ‘download‘ %}" rel="external nofollow" >点我下载</a></div>
二、大文件下载
大文件需要使用迭代器优化
只需要修改 views.py 文件
from django.http import StreamingHttpResponse def download(request): def file_iterator(file_name, chunk_size=512): with open(file_name, ‘rb‘) as f: while True: c = f.read(chunk_size) if c: yield c else: break the_file_name = ‘static/images/exam/logo.png‘ response = StreamingHttpResponse(file_iterator(the_file_name)) response[‘Content-Type‘] = ‘application/octet-stream‘ response[‘Content-Disposition‘] = ‘attachment;filename="{0}"‘.format(the_file_name) return response
以上是关于Django_文件下载的主要内容,如果未能解决你的问题,请参考以下文章
如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段