详解django三种文件下载方式
推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输。
在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,
如nginx,这里我们主要介绍django中的文件下载。
实现方式:a标签+响应头信息(当然你可以选择form实现)
<div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >点我下载</a></div>
方式一:使用HttpResponse
路由url:url(r'^download/',views.download,name="download"),
views.py代码from django.shortcuts import HttpResponsedef 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
方式二:使用StreamingHttpResponse, 其他逻辑不变,主要变化在后端处理:from django.http import StreamingHttpResponsedef 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
方式三:使用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
转载于:https://www.cnblogs.com/nyist-xsk/p/10155509.html
详解django三种文件下载方式相关推荐
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- 详解ISA2006三种客户端
详 解ISA2006三种客户端<?XML:NAMESPACE PREFIX = O /> 上一篇我们介绍了如何部署ISA2006,本文我们要让部署好的ISA来干活了.ISA能干什么活?从字 ...
- java同步异步调用_详解java 三种调用机制(同步、回调、异步)
1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...
- Windows下图文详解PHP三种运行方式(php_mod、cgi、fastcgi)
PHP能不能成功的在Apache服务器上运行,就看我们如何去配置PHP的运行方式.PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...
- LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- 详解 Calico 三种模式(与 Fannel 网络对比学习)
参考 Component architecture calico架构与网络模型深入分析 35 | 解读Kubernetes三层网络方案 calico学习 Kubernetes网络插件Flannel的3 ...
- 【Kubernetes 系列】详解 ConfigMap 九种创建方式
作者:半身风雪 上一节:配置 Java 微服务 内容简介:上一节主要学习使用 Kubernetes ConfigMaps 和 Secrets 设置环境变量,本节我们将学习,创建ConfigMap 的1 ...
- C语言的注释形式及作用,C语言注释详解(两种注释方式)
在编写C语言源代码时,应该多使用注释,这样有助于对代码的理解.在C语言中有两种注释方式: 一种是以/*开始.以*/结束的块注释(block comment): 另一种是以//开始.以换行符结束的单行注 ...
- Java控制器controller_详解springMVC—三种控制器controller
在springmvc中提供了三种controller的配置,1.针对不需要controller代码的,也就是只起到跳转页面的作用.2.可以接受实体类型的controller.3.可以接受表单数据的co ...
最新文章
- 不同版本gene ID比较
- python安装教程32位-python为什么要装32位的
- SQL Azure(十) SQL Azure Data Sync数据同步功能(上)
- 【Python 自然语言处理 第二版】读书笔记2:获得文本语料和词汇资源
- 【坐在马桶上看算法】算法10:二叉树
- 数论三之组合数学Ⅰ-Max-Min Sums,Binomial Coefficient is Fun,Strivore,Bubble Sort,放棋子,LOJ6671,Iroha and a Grid
- 学习分布式不得不会的ACP理论
- 面向对象程序设计的术语
- C++:02---命名空间
- dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数
- API接口应该如何设计?
- 温故而知新,8个有用的JS技巧「小知识点」
- 用 iBiu 3 秒构建出大型 Vue 项目架子
- 9.28 csp-s模拟测试54 x+y+z
- rest-framework之版本控制
- CCFTF17(上海):认知计算产业化如何落地(知识图谱、智能问答等)
- 性能,不是不重要,而是,它没有可维护性重要
- 【遥感影像处理与分析】遥感影像校正详解-辐射校正、几何校正流程与方法比较
- Excel-查找与引用函数
- openstack搭建问题