Django 小记 FileResponse 实现文件下载
今天学了FileResponse,这模块太棒了,学完之后我已经开始幻想未来我在后端是什么样子了,想想都流口水。
FileResponse
FileResponse 是 StreamingHttpResponse 的子类 拥有自动分段,自动迭代的功能,适合二进制文件传输,常用的传输文件格式包括py、txt、jpg、png、gif、docx、xlsx、mp3、mp4等。
我们结合代码看一下。
from django.http import FileResponsedef download(request):response = FileResponse(open(r"yinyue.mp3", "rb"))response['Content-Type'] = 'application/octet-stream'response['Content-Disposition'] = "attachment;filename=music.mp3" # 注意filename不支持中文return response
在视图中定义download函数,注意必须要以request作为参数,同时需要导入 FileResponse 模块。使用 FileResponse 读取文件时直接使用open函数即可,无需使用with open 的方法。这里有两个特定的MIME标记 Content-Type 与 Content-Disposition,第一个是指定文件类型,第二个是用于指定文件下载的名称,注意有attachment参数,以及filename不支持中文名(暂时我了解的是这样)。
最后,如果指定文件路径时是使用相对路径的话就要格外的注意了,相对路径应该是相对manage.py而言的,而不是相对于view函数。
因为MP3跟manage.py处在同一级目录,所以直接引用就完事。噢对了,读写的时候要二进制读写即rb,而不要写成r。
Django 小记 FileResponse 实现文件下载相关推荐
- 【Django下载文件-Kml文件下载】
Django下载文件系列 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 开发应该了解的Web文件下载 第二章 Django下载文件-三种方法 第三章 Django下载文件- ...
- 【开发应该了解的Web文件下载】
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 开发应该了解的Web文件下载 第二章 Django下载文件-三种方法 第三章 Django下载文件-Office ...
- django的优缺点总结 - Python Web开发面试必备
Django是利用Python语言从事Web开发的首选框架.如果你以后想从事python web开发工作,就必需了解其优缺点.这些都可能会是你将来的面试题哦. Django的优点 功能完善.要素齐全: ...
- Django 【全家桶】
Python Web 框架要点 1.Web 应用程序处理流程: 2.Web程序框架的意义 用来搭建Web应用程序 免去不同Web应用相同代码部分的重复编写,只需要关心Web应用核心的业务逻辑实现 3. ...
- Django基础(11): 表单集合Formset的高级用法详解
Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...
- Django 2.0 官方中文文档终于发布啦! 附链接!
对于很多想从事学习Django Web开发的很多人而言,Django一直没有官方的中文文档是个弊端.而且Django更新较快,国内很多翻译版本都太滞后了.现在小编我告诉大家一个好消息!! Django ...
- django后台返回excel表
django后台返回excel表 1. 方法一(不推荐) 思路:先根据条件从数据库查找data,再把data生成excel表,再把excel表返回(FileResponse) 步骤: 1.data:利 ...
- 详解django三种文件下载方式
推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输. 在实际的项目中很多时候需要用到下载功能,如 ...
- Django的文件下载
在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载. 我们这里 ...
最新文章
- 面向对象的软件测试技术
- Linux下三大最佳的开源视频播放器
- JavaScript window.location物
- [PHP]用PHPUnit进行行为驱动开发(Behaviour-Driven Development)
- 关于GC.Collect在不同机器上表现不一致问题
- 半正定矩阵的判定方法_线性代数30——正定矩阵和最小值
- SVN 分支/合并/切换
- 使用Docker堆栈部署的微服务-WildFly,Java EE和Couchbase
- 第九周项目6-穷举法之年龄几何
- python 读取xml表结构数据_Python从XML-fi读取数据
- 本地wamp的Internal Server Error错误解决方法
- 只返回数据表的部分字段(不建类)
- linux下的hosts文件
- Activity的生命周期方面复习笔记
- css在文字中间插入下划线,css实现文字自定义下划线
- 人脸识别中怎么区分人脸和照片
- 图像处理--医疗图片的处理
- Scala-trait(特质)
- 向周鸿祎学习产品和产品推销方法
- 【1+X】软件测试报告
热门文章
- 批量将doc转为docx
- 党的生日!爸爸妈妈节日快乐!
- android用开源框架实现仿地图界面功能
- 原来写刮刮卡这么简单,几行代码就搞定,你来你也行,谢谢惠顾!
- 开发android主攻四大方向
- 中美科技巨头加速裁员,超30万打工人饭碗岌岌可危|钛媒体焦点
- 怎样通过微信查找特殊服务器,微信支持多设备同时在线 还有哪些你不知道的微信隐藏功能...
- 2021-05-24chrome浏览器市场份额2018年1月占比上升至61.41%
- 【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.2 界面布局
- kettle案例1-计算器生成时间维度数据