gpt4 book ai didi

python - Flask api 中的自定义静态路径?

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:38 25 4
gpt4 key购买 nike

我在这里引用了链接:More than one static path in local Flask instance并尝试在浏览器选项卡中显示图像文件,但无法这样做。无法辨认出错误。stored_name 是存储在应用程序配置常量变量“UPLOAD_FOLDER”指定的路径中的文件的物理文件名。 此文件夹不在静态文件夹及其子文件夹路径中。我想增加文件的存储容量(也许还​​有图像文件),稍后通过添加硬盘空间,如果我使用静态文件夹进行存储,这是很困难的。我不想在应用程序初始化期间覆盖静态文件夹(可行)

代码片段:

从 flask 导入 send_from_directory

@app.route('/api/v1.0/docs/<path:filename>', methods=["GET"])
def img_render(filename):
print 'Called here'
return send_from_directory(app.config['UPLOAD_FOLDER'], filename)


@app.route('/api/v1.0/docs/<int:doc_id>',methods=["GET"])
def image_rendering(doc_id):
s = select([docs]).where(docs.c.id==doc_id)
rs = conn.execute(s).fetchone()
filename = str(rs[docs.c.stored_name])

return url_for('img_render', filename=filename)

HTML 模板:

<!DOCTYPE html>
<html>
<body>
<img src="{{url_for('img_render', filename=filename) }}" />
</body>
</html>

模板位于 templates 文件夹本身中。如果我在应用程序初始化期间覆盖原始静态文件夹,我可以在浏览器中显示图像,但我必须更改对应用程序静态文件夹的引用或者我将拥有从应用程序将图像上传到静态文件夹,我不想这样做。它只显示浏览器中图像的路径有什么错误示例:

/api/v1.0/docs/1_20160707_121214.jpg

而不是图像本身?代码中的错误在哪里?使用flask v .0.11,linux 2.7。

最佳答案

您的image_rendering方法在应该返回模板渲染的结果时返回一个字符串(这是您在浏览器中看到的)。

将以下示例中的“mytemplate.html”替换为您的 html 模板的名称。

from flask import render_template

@app.route('/api/v1.0/docs/<int:doc_id>',methods=["GET"])
def image_rendering(doc_id):
s = select([docs]).where(docs.c.id==doc_id)
rs = conn.execute(s).fetchone()
filename = str(rs[docs.c.stored_name])

return render_template('mytemplate.html', filename=filename)

这是一个在 Windows 中运行的简单 Flask 应用程序。在我的 d:\temp 文件夹中有一个文件 test.jpg 。确保您的 Flask 应用程序具有正确的权限来读取上传文件夹中的文件。要使用浏览至 http://127.0.0.1:5000/api/v1.0/docs/99 :

from flask import Flask, send_from_directory, render_template

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'd:/temp'


@app.route('/')
def hello_world():
return 'Hello World!'


@app.route('/api/v1.0/docs/<path:filename>', methods=["GET"])
def img_render(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'], filename=filename, mimetype='image/jpeg')


@app.route('/api/v1.0/docs/<int:doc_id>',methods=["GET"])
def image_rendering(doc_id):
# ignore doc_id, we'll use a constant filename
filename = 'test.jpg'
return render_template('test.html', filename=filename)


if __name__ == '__main__':
app.run()

test.html templates文件夹:

<!DOCTYPE html>
<html>
<body>
<img src="{{url_for('img_render', filename=filename) }}" />
</body>
</html>

关于python - Flask api 中的自定义静态路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com