【问题标题】:How do i link to images not in Static folder in flask我如何链接到不在烧瓶中的静态文件夹中的图像
【发布时间】:2015-01-14 07:03:32
【问题描述】:

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

我目前将用户上传的照片保存在烧瓶文件夹之外的目录中(在openshift 上,图像当前保存在app-root/data 下的数据文件夹中,烧瓶文件在app-root/repo/ 中)。

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

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

- data/
 |
  -- uploads/
- repo/
 |
  -- app/
    |
     -- __init__.py

正如您在烧瓶应用程序文件夹之外看到的数据文件夹。问题是如何从烧瓶应用程序目录生成指向存储在data/uploads(上一级)中的文件的链接?

【问题讨论】:

  • 能否提供您的项目结构(目录树)以及您已经尝试过的解决方案?

标签: python static flask openshift url-for


【解决方案1】:

你有 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)

然后,要调用它,您只需这样做:

{{ url_for('download_file', filename='dogs.jpg') }}

您可以了解有关此here 的更多信息。

【讨论】:

  • 谢谢。知道如何使用 url_for 获取文件的链接吗?
  • @sarul 我刚刚编辑了帖子,但基本上你只需要做 {{ url_for('download_file', filename='dogs.jpg') }}}。
  • 我试图在我的 img 标签的 src 部分引用 url_for ,但似乎仍然无法让它工作。我用文件结构更新了我的问题。我实际上是在尝试为存储在另一个目录中的烧瓶应用程序的数据/上传中存储的文件生成文件路径
  • 检查你的 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')
  • 感谢莱安德罗。我正在对媒体文件夹的路径进行硬编码,但无法使其正常工作。当我用你上面提到的 os.path, dirname 函数切换它时,它起作用了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多