En este artículo, analizaremos el proceso de carga de archivos en Python utilizando el entorno cgi . A menudo, uno se encuentra con varias aplicaciones web en las que el cliente o los usuarios deben cargar datos en forma de archivo (por ejemplo, archivo de imagen, archivo de audio, archivo de texto, etc.). Hay dos aspectos para cargar un archivo, ya que hay dos lados en esa interacción particular: el lado del cliente y el lado del servidor. Es necesario crear un formulario para aceptar la entrada del usuario en forma de archivo.
Un formulario HTML tiene diferentes atributos en los que puede configurarlo, por ejemplo, qué URL es la información cargada que se enviará a través del atributo de acción. Un atributo enctype llamado multi-part/form-datase requiere en un formulario HTML para cargar un archivo. En segundo lugar, se nos pedirá que usemos la etiqueta de entrada de HTML y la establezcamos como «archivo». Esto agrega un botón de carga además de un botón de entrada en el formulario. El siguiente código de ejemplo lo demuestra bien:
html
<html> <body> <form enctype = "multipart/form-data" action = "python_script.py" method = "post"> <p>Upload File: <input type = "file" name = "filename" /></p> <p><input type = "submit" value = "Upload" /></p> </form> </body> </html>
La salida para el código HTML anterior se vería a continuación:
En el código anterior, la acción de atributo tiene un script de python que se ejecuta cuando el usuario carga un archivo. En el extremo del servidor, cuando la secuencia de comandos de python acepta los datos cargados, el objeto de almacenamiento de campo recupera el nombre enviado del archivo del «nombre de archivo» del formulario. Ahora todo lo que el servidor necesita hacer es leer el archivo que se cargó y escribirlo en el «elemento de archivo» (por ejemplo, ). Al final de todo este proceso, el archivo cargado ahora se escribirá en el servidor.
Entonces, la secuencia de comandos de Python se parece un poco al siguiente código:
Python3
import os fileitem = form['filename'] # check if the file has been uploaded if fileitem.filename: # strip the leading path from the file name fn = os.path.basename(fileitem.filename) # open read and write the file into the server open(fn, 'wb').write(fileitem.file.read())
Nota: La secuencia de comandos de Python anterior no funciona en todos los servidores, ya que cada servidor tiene sus propias dependencias para permitir la ejecución de una secuencia de comandos en su servidor por razones de seguridad. Por ejemplo, si usa un servidor Azure, necesitaría importar msvcrt, que es el módulo de tiempo de ejecución de Microsoft Visual C++ para que funcione.
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA