Flask で静的ファイルを提供するのは、その単純さにもかかわらず、不可解な作業になる場合があります。この記事は、この一般的な問題に対する包括的な回答を提供することを目的としています。
Flask は本質的に、事前定義されたルート /static/
url_for('static', filename='js/analytics.js')
運用環境で最適なパフォーマンスを得るには、HTTP サーバーを次のように構成することをお勧めします。 Nginx または Apache として、Flask アプリケーションに到達する前に静的ファイル リクエストを処理します。
静的ファイルを実装したい場合Flask アプリケーション内でファイルを提供する場合は、send_from_directory の使用を検討してください。この関数は、ベース ディレクトリとパスの 2 つの引数を受け取り、指定されたパスが指定されたベース ディレクトリから外れないようにします。
@app.route('/reports/<path:path>') def send_report(path): return send_from_directory('reports', path)
セキュリティ上の脆弱性を避けるため、send_file または send_static_file を一緒に使用しないでください。信頼できないパス。ディレクトリ トラバーサル攻撃につながる可能性があります。 send_from_directory は、このリスクを軽減するために特別に設計されています。
さらに、ディスクに書き込まずにメモリ内にファイルを生成する場合は、BytesIO オブジェクトを send_file に渡して、通常のファイルのように提供できます。ただし、この場合、ファイル名やコンテンツ タイプなどの詳細を処理するには、send_file に他の引数を明示的に指定する必要があります。
以上がFlask アプリケーションで静的ファイルを効率的に提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。