如何链接到不在烧瓶中的静态文件夹中的图像

jet*_*com 11 python static url-for flask openshift

在烧瓶中,如何提供不在静态文件夹中的图像?

我目前将用户上传的照片保存在flask文件夹之外的目录中(打开openshift,当前保存在数据文件夹下的图像,并且文件夹app-root/data文件位于其中app-root/repo/).

在我的模板中,我如何提供图像文件?

使用url_for,如何引用flask文件夹之外的这些图像文件?

- data/
 |
  -- uploads/
- repo/
 |
  -- app/
    |
     -- __init__.py
Run Code Online (Sandbox Code Playgroud)

正如您可以在flask app文件夹外看到数据文件夹.如何data/uploads从flask app目录生成存储在(一级以上)文件的链接是个问题?

Lea*_*let 19

你有send_from_directory函数可以做你想要的,我要做的是声明一个名为MEDIA_FOLDER的常量,其中包含媒体文件所在的路径,然后,你唯一需要做的就是调用这样的函数:

from config import MEDIA_FOLDER

@app.route('/uploads/<path:filename>')
def download_file(filename):
    return send_from_directory(MEDIA_FOLDER, filename, as_attachment=True)
Run Code Online (Sandbox Code Playgroud)

然后,要调用它,您只需执行以下操作:

{{ url_for('download_file', filename='dogs.jpg') }}
Run Code Online (Sandbox Code Playgroud)

您可以在此处获得更多相关信息.

  • 检查您的MEDIA_FOLDER路径,因为该路径应该始终为MEDIA_FOLDER + img / dogs.jpg,就像静态内容的url一样。对于您的应用程序结构,MEDIA_FOLDER应该具有以下内容:`MEDIA_FOLDER = os.path。 join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__ file__)))),'data')` (2认同)