详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法


Posted in Python onJanuary 07, 2021

1 StreamingHttpResponse下载

StreamingHttpResponse(streaming_content):流式相应,内容的迭代器形式,以内容流的方式响应。

注:StreamingHttpResponse一般多现实在页面上,不提供下载。

以下为示例代码

def streamDownload(resquest):
 def file_iterator(filepath, chunk_size = 512):
 with open(filepath, 'rb') as f:
  while True:
  con = f.read(512)
  if con:
   yield con
  else:
   break
 filename = os.path.abspath(__file__) + 'test.txt'
 response = StreamingHttpResponse(file_iterator(filename)
 return response 
# 最后程序会将结果打印在显示器上

2 FileResponse下载

FileResponse(stream):以流形式打开后的文件

注:FileResponse是StreamingHttpResponse的子类

以下为示例代码:

def homeproc2(request):
 cwd = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 response = FileResponse(open(cwd + "/msgapp/templates/youfile", "rb"))
 response['Content-Type] = 'application/octet-stream'
 response['Content-Disposition'] = 'attachment;filename="filename"'
 return response

需要解释说明的是:

response['Content-Type] = 'application/octet-stream'
 response['COntent-Disposition'] = 'attachment;filename="filename"'
  • Content-Type:用于指定文件类型。
  • COntent-Disposition:用于指定下载文件的默认名称,对,没错! “CO”两个字符都要大写。

两者都是MIME协议里面的标准类型。

到此这篇关于详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法的文章就介绍到这了,更多相关Django StreamingHttpResponse与FileResponse内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用socket远程连接错误处理方法
Apr 29 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
Python实现高效求解素数代码实例
Jun 30 Python
Python用模块pytz来转换时区
Aug 19 Python
python版学生管理系统
Jan 10 Python
Python实现抢购IPhone手机
Feb 07 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
Python函数参数分类原理详解
May 28 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 #Python
jupyter notebook更换皮肤主题的实现
Jan 07 #Python
基于 Python 实践感知器分类算法
Jan 07 #Python
如何编写python的daemon程序
Jan 07 #Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 #Python
详解Python遍历列表时删除元素的正确做法
Jan 07 #Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 #Python
You might like
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php实现Session存储到Redis
2015/11/11 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
详解supervisor使用教程
2017/11/21 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
写给妈妈的感谢信
2015/01/22 职场文书
清洁工个人总结
2015/03/04 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
资产移交协议书
2016/03/24 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers