Flask での静的ファイルの提供
静的ファイルの提供は、Web 開発における一般的なタスクです。 Flask は、組み込みの静的フォルダー ルートや send_from_directory 関数の使用など、これを処理するためのいくつかの方法を提供しています。
組み込みの静的フォルダー ルート
Flask は、 /static/
from flask import url_for @app.route('/') def home(): return url_for('static', filename='css/style.css')
send_from_directory 関数
send_from_directory 関数を使用すると、アプリ内の任意のディレクトリからファイルを提供できます。ベース ディレクトリと要求されたファイル パスの 2 つの引数を取ります。これにより、要求されたパスがベース ディレクトリ内に含まれることが保証され、ディレクトリ トラバーサル攻撃が防止されます。
from flask import send_from_directory @app.route('/reports/<path:path>') def send_report(path): return send_from_directory('reports', path)
注:
send_file または send_static_file を user-脆弱性にさらされる可能性があるため、指定されたパスを使用しないでください。代わりに、ユーザー指定のパスを安全に処理するように設計された send_from_directory を使用してください。
メモリ内ファイルの提供
で生成されたファイルを提供する必要がある場合は、ディスクに書き込まずにメモリに保存できる場合は、BytesIO を使用してメモリ内ファイル オブジェクトを作成し、それを send_file に渡すことができます。ファイル名、コンテンツ タイプ、その他の属性も指定する必要があります。
from io import BytesIO import zipfile @app.route('/download.zip') def download_zip(): buffer = BytesIO() zipfile.ZipFile(buffer, 'w').write('file.txt') buffer.seek(0) return send_file(buffer, mimetype='application/zip', as_attachment=True, attachment_filename='download.zip')
以上がFlask アプリケーションで静的ファイルを効率的に提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。