我已经使用CloudLinux在cPanel服务器中设置了Flask应用。我使用了安装Python应用程序功能。
该应用程序位于/ home / user / app文件夹中。应用程序网址为https://www.example.com/app
cPanel使用Phusion Passenger来使该应用程序与Apache一起使用。
当我创建应用程序时,创建了一个文件夹/ home / user / app / public,并且所有图像都应该放在该文件夹中。
该应用程序运行良好,但公用文件夹中图像的所有URL均出现404错误。我尝试了不同的网址,例如https://www.example.com/app/image.jpg和https://www.example.com/app/public/image.jpg。始终为404。
这是我第一次使用此Setup Python App功能。
有人知道要使用哪个正确的URL,或者需要配置什么才能提供图像?
谢谢!
编辑:
图片网址是使用url_for创建的:
return url_for('general.send_data_file', filename=key)
生成的网址看起来正确
我添加了一条路径来提供文件:
@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的日志中没有错误。
答案 0 :(得分: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">