我正在尝试使用此答案作为指南从 Flask 中的 get 请求返回 jpg 文件如何在 Flask响应中返回图像?
我在我的根目录中运行了这段代码(在龙卷风服务器上):
@app.route('/pic/<string:address>', methods= ["GET"])
def here(address=None):
return send_file(url_for('static', filename='images/123_Octavia_St.jpg'), mimetype='image/jpg')
Run Code Online (Sandbox Code Playgroud)
我的文件位于 rootdirectory/static/images/123_Octavia_St.jpg
我收到此错误:
IOError: [Errno 2] No such file or directory: '/static/images/123_Octavia_St.jpg'
Run Code Online (Sandbox Code Playgroud)
以下是路径:
$ pwd
pathto/rootdirectory/static/images
$ ls
123_Octavia_St.jpg
Run Code Online (Sandbox Code Playgroud)
不要使用url_for(); 那是用于生成 URL,而不是文件路径。
相反,使用send_from_directory()静态目录作为根:
from flask import app, send_directory
@app.route('/pic/<string:address>', methods= ["GET"])
def here(address=None):
return send_from_directory(app.static_folder, 'images/123_Octavia_St.jpg', mimetype='image/jpg')
Run Code Online (Sandbox Code Playgroud)
或者,对于静态文件,只需重用 Flask 用于提供静态文件本身的视图,app.send_static_file():
from flask import app
@app.route('/pic/<string:address>', methods= ["GET"])
def here(address=None):
return app.send_static_file('images/123_Octavia_St.jpg')
Run Code Online (Sandbox Code Playgroud)