详解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的Template使用指南
Sep 11 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
Python实现识别手写数字大纲
Jan 29 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
Python文件时间操作步骤代码详解
Apr 13 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
pycharm sciview的图片另存为操作
Jun 01 Python
python 图像增强算法实现详解
Jan 24 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
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python去除字符串中的换行符
2017/10/11 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python如何实现线程间通信
2020/07/30 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
幼儿园教师培训制度
2014/01/16 职场文书
反腐倡廉标语
2014/06/24 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
建党伟业的观后感
2015/06/01 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python