简体   繁体   English

为什么flask无法找到该文件?

[英]Why can't flask find this file?

I am trying to return a jpg file from a get request in Flask using this answer as a guide How to return images in flask response? 我正在尝试使用此答案作为指南从Flask中的get请求返回jpg文件, 如何在flask响应中返回图像?

I have this code running in my root directory (off a tornado server): 我的代码在龙卷风服务器的根目录中运行:

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

I have the file located at rootdirectory/static/images/123_Octavia_St.jpg 我的文件位于rootdirectory/static/images/123_Octavia_St.jpg

I am getting this error: 我收到此错误:

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

Here are the paths: 这是路径:

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

Don't use url_for() ; 不要使用url_for() ; that's for generating URLs, not file paths. 用于生成URL,而不是文件路径。

Instead, use send_from_directory() with the static directory as the root: 而是使用以静态目录为根的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')

or, for static files, just reuse the view Flask uses for serving static files itself, app.send_static_file() : 或者,对于静态文件,只需重用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')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM