Dans le domaine du développement Web, Flask est devenu un micro-framework populaire pour la création d'applications Web en raison de sa simplicité et de sa flexibilité. Une exigence courante dans de nombreuses applications Flask est la gestion des téléchargements de fichiers. Cependant, permettre aux utilisateurs de télécharger des fichiers sans restrictions appropriées peut entraîner divers problèmes, tels qu'une consommation excessive de stockage sur le serveur et des risques de sécurité potentiels. Dans ce blog, en tant que fournisseur de Filtering Flask, je vais vous guider tout au long du processus de filtrage des téléchargements de fichiers de l'application Flask en fonction de leur taille.
Comprendre les bases des téléchargements de fichiers dans Flask
Avant d'aborder le filtrage par taille, examinons brièvement le fonctionnement des téléchargements de fichiers dans Flask. Flask fournit un moyen simple de gérer les téléchargements de fichiers via sonrequête.fichiersobjet. Lorsqu'un utilisateur soumet un formulaire avec un champ de saisie de fichier, le fichier téléchargé est accessible dans l'application Flask.
Voici un exemple simple d'application Flask qui accepte les téléchargements de fichiers :
à partir du flacon d'importation Flask, request app = Flask(__name__) @app.route('/upload', METHODS=['POST']) def upload_file(): file = request.files['file'] if file: file.save('uploads/' + file.filename) return 'Fichier téléchargé avec succès' return 'Aucun fichier téléchargé' si __name__ == '__main__': app.run(debug=True)
Dans ce code, nous définissons un itinéraire/téléchargerqui accepte les requêtes POST. Lorsqu'un fichier est téléchargé, il est enregistré dans letéléchargementsannuaire.


Pourquoi filtrer les téléchargements de fichiers en fonction de leur taille ?
Il existe plusieurs raisons pour lesquelles vous souhaiterez peut-être filtrer les téléchargements de fichiers en fonction de leur taille. Premièrement, le stockage sur serveur est une ressource limitée. Permettre aux utilisateurs de télécharger des fichiers extrêmement volumineux peut rapidement épuiser l'espace disponible de votre serveur. Deuxièmement, les téléchargements de fichiers volumineux peuvent entraîner des problèmes de performances, surtout si votre serveur dispose d'une bande passante limitée. De plus, des utilisateurs malveillants peuvent tenter de télécharger des fichiers très volumineux dans le cadre d'une attaque par déni de service.
Implémentation du filtrage par taille dans Flask
Pour implémenter le filtrage par taille dans une application Flask, nous devons vérifier la taille du fichier téléchargé avant de l'enregistrer. Flask ne fournit pas de moyen direct d'obtenir la taille du fichier à partir durequête.fichiersobjet, mais nous pouvons utiliser letoimodule en Python pour y parvenir.
Voici une version mise à jour de l'exemple précédent avec filtrage par taille :
importer le système d'exploitation depuis le flacon importer le flacon, demander app = Flask(__name__) MAX_FILE_SIZE = 1024 * 1024 # 1MB @app.route('/upload', méthodes=['POST']) def upload_file(): file = request.files['file'] if file: file.seek(0, os.SEEK_END) file_size = file.tell() file.seek(0) if file_size > MAX_FILE_SIZE : return "La taille du fichier dépasse la limite" file.save('uploads/' + file.filename) return "Fichier téléchargé avec succès" return "Aucun fichier téléchargé" si __name__ == '__main__' : app.run(debug=True)
Dans ce code, nous définissons d'abord une taille maximale de fichierMAX_FILE_SIZE(dans ce cas, 1 Mo). Lorsqu'un fichier est téléchargé, nous utilisons lechercheretdireméthodes pour obtenir la taille du fichier. Si la taille du fichier dépasse la limite maximale, nous renvoyons un message d'erreur. Sinon, nous sauvegardons le fichier comme d'habitude.
Utilisation de Flask - WTF pour la validation de formulaire
Flask - WTF est une extension pour Flask qui simplifie la gestion et la validation des formulaires. Nous pouvons l'utiliser pour effectuer un filtrage par taille de manière plus élégante.
Tout d'abord, installez Flask - WTF :
pip installer le flacon - wtf
Voici un exemple d'utilisation de Flask - WTF pour le filtrage par taille :
à partir de flask import Flask, render_template, demande de flask_wtf import FlaskForm à partir de wtforms import FileField à partir de wtforms.validators import DataRequired import os app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' MAX_FILE_SIZE = 1024 * 1024 # 1MB class UploadForm(FlaskForm): file = FileField('Upload File', validators=[DataRequired()]) @app.route('/upload', METHODS=['GET', 'POST']) def upload_file() : form = UploadForm() if form.validate_on_submit() : file = form.file.data file.seek(0, os.SEEK_END) file_size = file.tell() file.seek(0) if file_size > MAX_FILE_SIZE : return 'La taille du fichier dépasse la limite' file.save('uploads/' + file.filename) return 'Fichier téléchargé avec succès' return render_template('upload.html', form=form) if __name__ == '__main__' : app.run(debug=True)
Dans cet exemple, nous créons une classe de formulaireTélécharger le formulaireen utilisant Flask - WTF. Le formulaire a unChampFichierpour les téléchargements de fichiers. Lorsque le formulaire est soumis, nous effectuons le contrôle de taille comme auparavant.
Considérations pour différents environnements
Lors de la mise en œuvre du filtrage par taille, il est important de prendre en compte les différents environnements dans lesquels votre application Flask peut s'exécuter. Par exemple, dans un environnement de développement, vous souhaiterez peut-être définir une taille de fichier maximale relativement faible à des fins de test. Dans un environnement de production, vous devrez peut-être ajuster la limite en fonction des ressources de votre serveur et de la nature de votre application.
Nos produits en flacons filtrants
En tant que fournisseur de flacons filtrants, nous proposons une large gamme de flacons filtrants de haute qualité pour diverses applications de laboratoire. NotreFlacons filtrants en verre transparent de laboratoire avec tubulure supérieuresont fabriqués en verre transparent, ce qui permet une observation facile du processus de filtration. Ils sont conçus avec une tubulure supérieure pour une filtration efficace.
Un autre produit populaire est notreFlacons filtrants Erlenmeyer de forme conique en verre de laboratoire avec tubulation supérieure. La forme conique offre une meilleure stabilité et convient à une variété de tâches de filtration.
Contactez-nous pour l'approvisionnement
Si vous êtes intéressé par nos flacons filtrants ou si vous avez des questions sur le filtrage par taille dans les applications Flask, nous vous invitons à nous contacter pour des discussions d'approvisionnement. Notre équipe d'experts est prête à vous aider à trouver les produits adaptés à vos besoins.
Références
- Documentation du flacon
- Python
toidocumentation du module - Flacon - Documentation WTF
