Malgré sa simplicité, servir des fichiers statiques dans Flask peut être une tâche déroutante. Cet article vise à fournir une réponse complète à ce problème courant.
Flask prend automatiquement en charge le service de fichiers statiques via une route prédéfinie, /static/
url_for('static', filename='js/analytics.js')
Pour des performances optimales en production, il est recommandé de configurer votre serveur HTTP, tel comme Nginx ou Apache, pour gérer les demandes de fichiers statiques avant d'atteindre l'application Flask.
Si vous souhaitez implémenter le service de fichiers statiques au sein de votre application Flask, pensez à utiliser send_from_directory. Cette fonction prend deux arguments : un répertoire de base et un chemin, garantissant que le chemin fourni ne sort pas du répertoire de base spécifié.
@app.route('/reports/<path:path>') def send_report(path): return send_from_directory('reports', path)
Pour éviter toute faille de sécurité, n'utilisez jamais send_file ou send_static_file avec chemins non fiables, car cela peut conduire à des attaques par traversée de répertoires. send_from_directory est spécialement conçu pour atténuer ce risque.
De plus, si vous générez des fichiers en mémoire sans les écrire sur le disque, vous pouvez transmettre un objet BytesIO à send_file pour le servir comme un fichier normal. Cependant, dans ce cas, vous devrez spécifier explicitement d'autres arguments à send_file pour gérer des détails tels que le nom de fichier et le type de contenu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!