En el ámbito del desarrollo web, Flask se ha convertido en un micromarco popular para crear aplicaciones web debido a su simplicidad y flexibilidad. Un requisito común en muchas aplicaciones de Flask es el manejo de la carga de archivos. Sin embargo, permitir a los usuarios cargar archivos sin las restricciones adecuadas puede generar varios problemas, como un consumo excesivo de almacenamiento en el servidor y posibles riesgos de seguridad. En este blog, como proveedor de Filtering Flask, lo guiaré a través del proceso de filtrado de cargas de archivos de la aplicación Flask según el tamaño.
Comprender los conceptos básicos de la carga de archivos en Flask
Antes de profundizar en el filtrado de tamaños, repasemos brevemente cómo funcionan las cargas de archivos en Flask. Flask proporciona una manera sencilla de manejar la carga de archivos a través de suarchivos.de.solicitudobjeto. Cuando un usuario envía un formulario con un campo de entrada de archivo, se puede acceder al archivo cargado en la aplicación Flask.
A continuación se muestra un ejemplo sencillo de una aplicación Flask que acepta carga de archivos:
desde flask import Flask, solicitud de aplicación = Flask(__name__) @app.route('/upload', métodos=['POST']) def upload_file(): file = request.files['file'] if file: file.save('uploads/' + file.filename) return 'Archivo cargado exitosamente' return 'No se cargó ningún archivo' if __name__ == '__main__': app.run(debug=True)
En este código, definimos una ruta./subirque acepta solicitudes POST. Cuando se carga un archivo, se guarda en elcargasdirectorio.


¿Por qué filtrar las cargas de archivos según el tamaño?
Hay varias razones por las que es posible que desees filtrar la carga de archivos según el tamaño. En primer lugar, el almacenamiento del servidor es un recurso finito. Permitir que los usuarios carguen archivos extremadamente grandes puede agotar rápidamente el espacio disponible en su servidor. En segundo lugar, la carga de archivos grandes puede causar problemas de rendimiento, especialmente si su servidor tiene un ancho de banda limitado. Además, los usuarios malintencionados pueden intentar cargar archivos muy grandes como forma de ataque de denegación de servicio.
Implementación del filtrado de tamaño en Flask
Para implementar el filtrado de tamaño en una aplicación Flask, debemos verificar el tamaño del archivo cargado antes de guardarlo. Flask no proporciona una forma directa de obtener el tamaño del archivo desde elarchivos.de.solicitudobjeto, pero podemos usar eltúmódulo en Python para lograr esto.
Aquí hay una versión actualizada del ejemplo anterior con filtrado de tamaño:
importar sistema operativo desde flask importar Flask, solicitar aplicación = Flask(__name__) MAX_FILE_SIZE = 1024 * 1024 # 1MB @app.route('/upload', métodos=['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 'El tamaño del archivo excede el límite' file.save('uploads/' + file.filename) return 'Archivo cargado exitosamente' return 'No se cargó ningún archivo' if __name__ == '__main__': app.run(debug=True)
En este código, primero definimos un tamaño máximo de archivo.MAX_FILE_SIZE(en este caso, 1 MB). Cuando se carga un archivo, utilizamos elbuscarydecirMétodos para obtener el tamaño del archivo. Si el tamaño del archivo excede el límite máximo, devolvemos un mensaje de error. En caso contrario guardamos el archivo como de costumbre.
Usando Flask - WTF para validación de formularios
Flask: WTF es una extensión para Flask que simplifica el manejo y la validación de formularios. Podemos usarlo para realizar el filtrado de tamaño de una forma más elegante.
Primero, instale Flask - WTF:
matraz de instalación de pip - wtf
A continuación se muestra un ejemplo del uso de Flask - WTF para el filtrado de tamaño:
desde flask import Flask, render_template, solicitud desde flask_wtf import FlaskForm desde wtforms import FileField desde wtforms.validators import DataRequired import os app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' MAX_FILE_SIZE = 1024 * 1024 # 1MB clase UploadForm(FlaskForm): archivo = FileField('Cargar archivo', validadores=[DataRequired()]) @app.route('/upload', métodos=['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: devuelve 'El tamaño del archivo excede el límite' file.save('uploads/' + file.filename) devuelve 'El archivo se cargó correctamente' devuelve render_template('upload.html', form=form) if __name__ == '__main__': app.run(debug=True)
En este ejemplo, creamos una clase de formulario.Cargar formulariousando Flask - WTF. El formulario tiene uncampo de archivopara carga de archivos. Cuando se envía el formulario, realizamos la verificación del tamaño como antes.
Consideraciones para diferentes entornos
Al implementar el filtrado de tamaño, es importante considerar los diferentes entornos en los que podría ejecutarse su aplicación Flask. Por ejemplo, en un entorno de desarrollo, es posible que desee establecer un tamaño de archivo máximo relativamente bajo con fines de prueba. En un entorno de producción, es posible que necesite ajustar el límite según los recursos de su servidor y la naturaleza de su aplicación.
Nuestros productos de matraces filtrantes
Como proveedor de matraces filtrantes, ofrecemos una amplia gama de matraces filtrantes de alta calidad para diversas aplicaciones de laboratorio. NuestroMatraces filtrantes de vidrio transparente de laboratorio con tubulatura superiorEstán hechos de vidrio transparente, lo que permite una fácil observación del proceso de filtrado. Están diseñados con una tubulatura superior para una filtración eficiente.
Otro producto popular es nuestroMatraces filtrantes Erlenmeyer de forma cónica de vidrio de laboratorio con tubulación superior. La forma cónica proporciona una mejor estabilidad y es adecuada para una variedad de tareas de filtración.
Contáctenos para adquisiciones
Si está interesado en nuestros matraces filtrantes o tiene alguna pregunta sobre el filtrado por tamaño en las aplicaciones Flask, lo invitamos a contactarnos para discutir la adquisición. Nuestro equipo de expertos está listo para ayudarlo a encontrar los productos adecuados para sus necesidades.
Referencias
- Documentación del matraz
- Pitón
túdocumentación del módulo - Matraz - documentación WTF
