You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Flask send_file默认返回200状态码的行为,使其返回自定义状态码(如201)?

当然可以改啦!其实Flask的send_file方法本身就支持自定义响应状态码,或者你也可以手动构建Response对象来实现,下面给你两种常用的方案:

方案一:直接给send_file传入status参数

这是最直接高效的方式,在调用send_file的时候,直接指定status参数为你想要的201即可:

from flask import Flask, send_file

app = Flask(__name__)

@app.route('/download')
def download_file():
    # 替换成你的实际文件路径
    file_path = 'path/to/your/target/file.txt'
    # 直接通过status参数覆盖默认的200状态码
    return send_file(file_path, as_attachment=True, status=201)

原理很简单:send_file本质是基于Flask的Response类实现的,它支持所有Response对象的参数,包括status,所以直接传参就能轻松修改默认状态码。

方案二:手动构建Response对象

如果你需要对响应做更多自定义操作(比如同时修改响应头、添加额外字段),可以先获取send_file生成的响应内容,再手动调整状态码:

from flask import Flask, send_file, Response

app = Flask(__name__)

@app.route('/download')
def download_file():
    file_path = 'path/to/your/target/file.txt'
    # 先拿到send_file生成的响应对象
    file_response = send_file(file_path, as_attachment=True)
    # 直接修改响应对象的status_code属性为201
    file_response.status_code = 201
    return file_response

这种方式灵活性更高,适合复杂场景下的响应定制。

另外提一句:如果是想全局修改所有send_file的默认状态码,其实不太推荐(毕竟不同业务场景可能需要不同的状态码),但真有需求的话,可以通过继承Flask类或者写一个装饰器封装send_file来实现,不过大多数情况下,单个路由指定状态码会更合理。

内容的提问来源于stack exchange,提问作者maslak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 07:07:41