Python Flask:返回的文件不可读
Python Flask : Returned file is not readable
在 python flask 中实现 rest API 时,我使用了几个选项来 return 文件(任何类型),读取它并将其保存到请求的本地存储库但遇到如下多个错误:
案例 1:
def download_file():
return send_file('any_file.pdf')
r = requests.get(url = 'http://localhost:5000/download').read()
响应错误响应对象没有属性read/text/content
案例二:
def download_file():
file = open('any_file.pdf','r').read()
return file
r = requests.get(url = 'http://localhost:5000/download')
已响应错误 Return 不接受此
所以我该怎么做,因为 flask 不允许 return 没有响应对象的文件,并且响应对象不可读并且不支持直接保存该文件。
Case 1
中的 Flask server 代码是正确的。一个更完整的例子:
@app.route('/download')
def download_file():
# Some logic here
send_file('any_file.pdf')
但是 requests.get
返回的 Response
对象没有 read
方法。正确的方法是使用:
Response.content
: Content of the response, in bytes.
所以,客户端代码应该是:
r = requests.get('http://localhost:5000/download')
bytes = r.content
# Now do something with bytes, for example save it:
with open('downloaded_file.ext', 'wb') as f:
f.write(bytes)
在 python flask 中实现 rest API 时,我使用了几个选项来 return 文件(任何类型),读取它并将其保存到请求的本地存储库但遇到如下多个错误:
案例 1:
def download_file():
return send_file('any_file.pdf')
r = requests.get(url = 'http://localhost:5000/download').read()
响应错误响应对象没有属性read/text/content
案例二:
def download_file():
file = open('any_file.pdf','r').read()
return file
r = requests.get(url = 'http://localhost:5000/download')
已响应错误 Return 不接受此
所以我该怎么做,因为 flask 不允许 return 没有响应对象的文件,并且响应对象不可读并且不支持直接保存该文件。
Case 1
中的 Flask server 代码是正确的。一个更完整的例子:
@app.route('/download')
def download_file():
# Some logic here
send_file('any_file.pdf')
但是 requests.get
返回的 Response
对象没有 read
方法。正确的方法是使用:
Response.content
: Content of the response, in bytes.
所以,客户端代码应该是:
r = requests.get('http://localhost:5000/download')
bytes = r.content
# Now do something with bytes, for example save it:
with open('downloaded_file.ext', 'wb') as f:
f.write(bytes)