Skip to main content
 首页 » 编程设计

python flask : Send file and variable

2025年05月04日25freeliver54

我有两台服务器,其中一台试图从另一台获取文件。我正在使用 Flask get 请求来回发送简单数据(字符串、列表、JSON 对象等)。

我也知道如何只发送一个文件,但我需要发送一个错误代码和我的数据。

我正在使用以下内容:

服务器 1:

req = requests.post('https://www.otherserver.com/_download_file', data = {'filename':filename}) 

服务器 2:

@app.route('/_download_file', methods = ['POST']) 
def download_file(): 
    filename = requests.form.get('filename') 
 
    file_data = codecs.open(filename, 'rb').read() 
    return file_data 

服务器 1:

with codecs.open('new_file.xyz', 'w') as f: 
    f.write(req.content) 

...所有这些都工作正常。但是,我想连同 file_data 一起发送错误代码变量,以便服务器 1 知道状态(不是 HTTP 状态,而是内部状态代码)。

感谢任何帮助。

请您参考如下方法:

我想到的一个解决方案是使用自定义 HTTP header 。

这是一个示例服务器和客户端实现。

当然,您可以根据需要自由更改自定义 header 的名称和值。

服务器

from flask import Flask, send_from_directory 
 
app = Flask(__name__) 
 
@app.route('/', methods=['POST']) 
def index(): 
    response = send_from_directory(directory='your-directory', filename='your-file-name') 
    response.headers['my-custom-header'] = 'my-custom-status-0' 
    return response 
 
if __name__ == '__main__': 
    app.run(debug=True) 

客户端

import requests 
 
r = requests.post(url) 
 
status = r.headers['my-custom-header'] 
 
# do what you want with status 

更新

这是基于您的实现的服务器的另一个版本

import codecs 
 
from flask import Flask, request, make_response 
 
app = Flask(__name__) 
 
@app.route('/', methods=['POST']) 
def index(): 
    filename = request.form.get('filename') 
 
    file_data = codecs.open(filename, 'rb').read() 
    response = make_response() 
    response.headers['my-custom-header'] = 'my-custom-status-0' 
    response.data = file_data 
    return response 
 
if __name__ == '__main__': 
    app.run(debug=True)