Python Flask:如何获取动态生成的图像文件的url? 从烧瓶导入烧瓶,重定向,url\u app=烧瓶(名称) @应用程序路径(“/”) def index(): 生成img(“test.jpg”); 返回“”
Python Flask:如何获取动态生成的图像文件的url? 从烧瓶导入烧瓶,重定向,url\u app=烧瓶(名称) @应用程序路径(“/”) def index(): 生成img(“test.jpg”); 返回“”,python,flask,Python,Flask,generate\u img()将随机图像输出到当前目录(与此脚本相同的文件夹) 我得到了404,我导航到mydomain.com/test.jpg,但它不在那里。假设实际生成了映像(即调用了index()),404的原因是没有指向映像的路由,因此Flask会告诉您没有mydomain.com/test.jpg。默认情况下,静态Web服务器(如Apache或Nginx)将从根目录映射到URL,但普通Flask/Werkzeug/WSGI设置不会这样做 也许您想创建一个直接返回图像的资源 编辑:类
generate\u img()
将随机图像输出到当前目录(与此脚本相同的文件夹)
我得到了404,我导航到mydomain.com/test.jpg,但它不在那里。假设实际生成了映像(即调用了index()),404的原因是没有指向映像的路由,因此Flask会告诉您没有mydomain.com/test.jpg。默认情况下,静态Web服务器(如Apache或Nginx)将从根目录映射到URL,但普通Flask/Werkzeug/WSGI设置不会这样做 也许您想创建一个直接返回图像的资源 编辑:类似的东西应该能够服务于图像
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
generate_img("test.jpg");
return '<img src=' + url_for(filename='test.jpg') + '>'
@app.route(“/imgs/”)
def图像(路径):
生成\u img(路径)
完整路径=“./imgs/”+路径
resp=flask.make_响应(打开(完整路径).read())
resp.content\u type=“图像/jpeg”
返回响应
EDIT2:当然,generate\u img可能会被重写,因此它不会写入磁盘,而是直接返回图像数据。404错误的原因是没有这样的视图来处理此问题。要从flask提供图像,请将图像保存在静态文件夹中,然后您可以通过此url访问图像
mydomain.com/static/test.jpg
@app.route("/imgs/<path:path>")
def images(path):
generate_img(path)
fullpath = "./imgs/" + path
resp = flask.make_response(open(fullpath).read())
resp.content_type = "image/jpeg"
return resp
从烧瓶导入烧瓶,重定向,url\u
app=烧瓶(名称)
@应用程序路径(“/”)
def index():
生成img(“test.jpg”)#保存在静态文件夹中
返回“”
静态文件夹是为所有媒体服务的,无论是css、javascript、视频或图像文件,都可以在mydomai.com/Static/filename上访问。请记住,在生产中不应使用静态文件夹中的烧瓶服务。此功能仅用于开发。如何创建直接返回图像的资源?那么,这根本不可能在烧瓶中实现吗?我希望基本上可以从Flask服务器访问图像和文件。所以对于生产,不要使用静态文件夹?您的意思是使用不同的文件夹名称吗?您也可以使用静态文件夹,但必须安装Apache或任何用于从该文件夹加载媒体的服务器。否则,如果flask继续提供这些服务,则会出现性能问题。查看这篇博客文章的最后几行,了解如何为此设置Apache
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
generate_img("test.jpg"); #save inside static folder
return '<img src=' + url_for('static',filename='test.jpg') + '>'