为什么烧瓶找不到这个文件?

时间:2014-04-07 15:32:58

标签: python flask

我正在尝试使用此答案作为指南,在Flask中从get请求返回jpg文件How to return images in flask response?

我的代码在我的根目录中运行(在龙卷风服务器之外):

@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')

我的文件位于rootdirectory/static/images/123_Octavia_St.jpg

我收到此错误:

IOError: [Errno 2] No such file or directory: '/static/images/123_Octavia_St.jpg'

以下是路径:

$ pwd
pathto/rootdirectory/static/images
$ ls
123_Octavia_St.jpg  

1 个答案:

答案 0 :(得分:4)

不要使用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')

或者,对于静态文件,只需重用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')