在 Flask 中提供靜態檔案(例如 HTML、CSS 和 JavaScript)對於建立 Web 應用程式至關重要。但是,查找有關此主題的具體文件可能會令人困惑。
預設情況下,Flask 會自動從名為「static」的子目錄提供靜態文件,該子目錄位於定義 Flask 應用程式的 Python 模組旁邊。要存取這些文件,請使用url_for 幫助程式產生帶有「static」前綴的URL:
url_for('static', filename='css/main.css')
例如,對URL '/static/css/main.css' 的請求將返回位於「static /css」目錄中的「main.css」檔案的內容。當您有專門的靜態文件目錄時,此方法適用。
如果您需要從不同的目錄提供文件,您可以使用send_from_directory 函數:
from flask import send_from_directory @app.route('/files/<path:path>') def get_file(path): return send_from_directory('files', path)
這將允許使用者使用URL「/files/
另一個選項是發送記憶體中的檔案。如果您產生檔案而不將其寫入檔案系統,則可以將BytesIO 物件傳遞給send_file 函數來為其提供服務:
from io import BytesIO from flask import send_file @app.route('/download/file') def download_file(): # Generate the file in memory content = b'...' filename = 'report.pdf' # Send the file output = BytesIO(content) return send_file(output, mimetype='application/pdf', as_attachment=True, attachment_filename=filename)
請記住處理路徑安全性並僅提供您打算公開的文件當使用這些方法時。
以上是如何在 Flask 應用程式中有效地提供靜態檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!