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",浏览器会提示用户下载该文件,而不是在浏览器中直接打开它
相关推荐
蔗理苦3 分钟前
2025-08-22 Python进阶10——魔术方法
开发语言·python
、水水水水水5 分钟前
RAG学习(五)——查询构建、Text2SQL、查询重构与分发
人工智能·python·深度学习·nlp
jieyu111928 分钟前
Python 实战:内网渗透中的信息收集自动化脚本(2)
python·网络安全·脚本开发
码界筑梦坊4 小时前
171-基于Flask的笔记本电脑数据可视化分析系统
python·信息可视化·flask·毕业设计·echarts
hui函数7 小时前
Flask电影投票系统全解析
后端·python·flask
闲人编程9 小时前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
计算机编程小咖10 小时前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
zhangfeng113311 小时前
以下是基于图论的归一化切割(Normalized Cut)图像分割工具的完整实现,结合Tkinter界面设计及Python代码示
开发语言·python·图论
flashlight_hi12 小时前
LeetCode 分类刷题:2529. 正整数和负整数的最大计数
python·算法·leetcode
Ashlee_code12 小时前
香港券商櫃台系統跨境金融研究
java·python·科技·金融·架构·系统架构·区块链