Tornado服务实现文件下载功能

一、背景介绍

工作中开发平台需要支持一个文件下载功能,使用的服务端框架是Tornado,前端是Element

二、实现思想

开发一个get接口,请求参数包含文件名,到指定目录下寻找该文件,将文件内容以流的形式写入HTTP响应中

复制代码
 filename = self.get_argument('filename')
 file_path = static_dir + "/xxxx/" + filename
 # http头浏览器自动识别为文件下载
 self.set_header('Content-Type', 'application/octet-stream')
 # 下载时显示的文件名称
 self.set_header('Content-Disposition', 'attachment; filename=%s' % filename)
 with open(file_path, 'rb') as f:
     while True:
         data = f.read(1024)
         if not data:
             break
         self.write(data)
 # 记得一定要有finish
 self.finish()
  • application/octet-stream:是一种通用的MIME类型,用于表示二进制数据。它告诉接收方应该将消息体解释为一系列字节,而不进行任何特定的解析或解码
  • Content-Disposition:用于指示浏览器将响应与特定的文件或文档关联起来。filename 是一个变量,表示要使用的文件名。表示的意思是将响应的内容视为与名为 filename 的文件相关联的附件。设置Content-Disposition为"attachment",浏览器会提示用户下载该文件,而不是在浏览器中直接打开它
相关推荐
用户8356290780515 分钟前
Python 自动化 Word 文本框处理:创建、定位、填充内容与管理
后端·python
数据知道1 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
努力的小Qin2 小时前
梯度下降如何实现参数优化:从线性回归到 Sigmoid 分类
人工智能·python·神经网络
strength_zhou20132 小时前
Python检查MongoDB索引列中的字段是否存在
python·mongodb
zander2582 小时前
LeetCode 739:每日温度——为什么单调栈要持续弹出
开发语言·python·算法
for_ever_love__3 小时前
python基础语法学习: 文件操作
python·学习
青春不败 177-3266-05203 小时前
基于R、Python的Copula变量相关性分析及AI大模型应用
人工智能·python·r语言·贝叶斯·统计学·copula
汤姆yu4 小时前
基于python大数据的高校舆情监测系统的设计与实现
大数据·开发语言·python·分享·分析·舆情
Cory.眼4 小时前
Python爬虫实战:从入门到进阶
开发语言·爬虫·python
qq_422152574 小时前
Token到底是什么?Tokenizer分词机制与中文token开销入门科普
人工智能·python·深度学习