我有一個簡單的 Flask Web 應用程式,它為每個用戶存盤小的 PDF/JPEG。由于檔案對每個用戶都是唯一的,我不想像燒瓶需要的那樣簡單地將它們存盤在“靜態”檔案夾中。相反,我有一個“用戶”檔案夾,其中為每個用戶創建一個子檔案夾并存盤他們的檔案。
我希望能夠執行以下操作,但影像不顯示:
{% block main %}
<img src="/users/bob/test.JPG"
{% endblock %}
但是,如果我將相同的 test.JPG 保存為靜態并使用以下內容,它確實有效:
{% block main %}
<img src="/static/test.JPG"
{% endblock %}
我的檔案結構是:
ProjectFolder
static
styles.css
templates
index.html
...
users
bob
image.jpg
...
sam
...
venv
app.py
helpers.py
uj5u.com熱心網友回復:
Flask 默認只支持從靜態檔案夾下載靜態檔案。
但是,如果您添加自己的端點,則可以從您選擇的檔案夾中下載檔案。出于安全原因,您應該確保對檔案系統某些區域的訪問受到限制。我還建議為此使用實體路徑的子目錄。因此,這些檔案與您的應用程式是分開的。
import os
from flask import Flask
from flask import send_from_directory
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = os.path.join(app.instance_path, 'users')
try:
os.makedirs(app.config['UPLOAD_FOLDER'])
except OSError:
pass
@app.route('/users/<path:filename>')
def download(filename):
return send_from_directory(
app.config['UPLOAD_FOLDER'],
filename
)
要請求其中一個檔案,您可以使用url_for或直接指定路徑。
<img src="{{ url_for('.download', filename='bob/image.jpg') }}" />
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/432453.html
上一篇:如何在燒瓶中一起賦予獨特性?
