Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask:如何获取动态生成的图像文件的url? 从烧瓶导入烧瓶,重定向,url\u app=烧瓶(名称) @应用程序路径(“/”) def index(): 生成img(“test.jpg”); 返回“”_Python_Flask - Fatal编程技术网

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