cPanel中的Flask在公共文件夹下显示404图像

问题描述 投票:-1回答:1

我在带有CloudLinux的cPanel服务器中设置了Flask应用程序。我使用了Setup Python App功能。

该应用程序位于文件夹/ home / user / app。应用网址是https://www.example.com/app

cPanel使用Phusion Passenger使应用程序与Apache一起工作。

当我创建应用程序时,创建了一个文件夹/ home / user / app / public,据说所有图像都应该去那里。

该应用程序运行良好,但公用文件夹中图像的所有URL都给出了404错误。我尝试了不同的网址,如https://www.example.com/app/image.jpghttps://www.example.com/app/public/image.jpg。总是404。

这是我第一次使用此安装Python应用程序功能。

有谁知道哪个是正确使用的URL,或者需要配置什么才能提供图像?

谢谢!

编辑:

图像网址是使用url_for创建的:

return url_for('general.send_data_file', filename=key)

生成的URL看起来正确

我添加了一个提供文件的路由:

@general_blueprint.route('/public/data_store/data/<filename>', methods=['GET'])
def send_data_file(filename):
    return send_from_directory(app.config.get('DATA_FOLDER'), filename)

我得到404而不是文件。

例如,生成的文件URL是/app/public/data_store/data/test.jpg。该应用程序在/ app下运行,并且所有创建的路由都有效,在定义路径时不使用/ app。我在send_data_file中添加了一个app.logger.info调用,并且正在调用它。

app.config.get ['DATA_FOLDER']等于./public/data_store/data

来自send_from_directory的日志没有错误。

python flask cpanel passenger
1个回答
0
投票

要在应用程序中的主static文件夹之外提供静态文件,您需要在Flask配置中更改它,如下所示:

app = Flask(__name__, static_folder='/home/user/app/public')

然后,使用url_for作为相对路径,将static作为HTML文件中的第一个参数:

<img src="{{ url_for('static', filename='images/image.svg') }}" alt="svg image">
© www.soinside.com 2019 - 2024. All rights reserved.