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

作者:Better_Zflyee 时间:2021-04-13 08:17:01 

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协议里面的标准类型。

来源:https://blog.csdn.net/Geoffrey_Zflyee/article/details/107360761

标签:Django,StreamingHttpResponse,FileResponse,下载
0
投稿

猜你喜欢

  • PyQt5高级界面控件之QTableWidget的具体使用方法

    2023-09-05 15:36:41
  • python 抓包保存为pcap文件并解析的实例

    2023-04-03 03:52:04
  • python实现获取当前设备的地点位置

    2022-02-11 05:30:59
  • Webpack 实现 Node.js 代码热替换

    2024-05-13 10:04:14
  • 浅谈spring boot 集成 log4j 解决与logback冲突的问题

    2023-06-22 13:12:05
  • Python实现感知器模型、两层神经网络

    2021-11-14 07:34:19
  • Python对象的底层实现源码学习

    2023-06-30 00:33:29
  • 深入理解Python中的内置常量

    2023-01-21 02:57:47
  • Python Pandas对缺失值的处理方法

    2021-03-18 19:38:55
  • javascript动画之模拟拖拽效果篇

    2024-04-16 09:14:22
  • Python2和3字符编码的区别知识点整理

    2023-03-11 16:19:46
  • 基于Python脚本实现邮件报警功能

    2023-02-04 17:16:41
  • 利用ASP+JMAIL进行邮件群发的新思路

    2008-03-20 13:30:00
  • PHP基于phpqrcode类生成二维码的方法示例详解

    2023-07-15 22:57:52
  • Git 教程之标签详解

    2023-10-25 21:58:04
  • Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解

    2022-02-08 00:33:29
  • Python 实现任意区域文字识别(OCR)操作

    2021-04-23 03:52:37
  • 根据DataFrame某一列的值来选择具体的某一行方法

    2021-01-08 20:33:42
  • python实现批量修改文件名代码

    2023-05-04 14:44:41
  • 树莓派(python)与arduino串口通信的详细步骤

    2022-05-29 15:31:06
  • asp之家 网络编程 m.aspxhome.com