English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Caricamento File Flask

Tutorial Flask

Gestire il caricamento dei file in Flask è molto semplice. Ha bisogno di un modulo HTML del tipo 'multipart/form-data' che invia il modulo a un URL specifico. Il gestore dell'URL estrae il file dall'oggetto request.files[] e lo salva nel percorso desiderato.

Puoi definire il percorso predefinito della cartella di upload e la dimensione massima del file da caricare nella configurazione dell'oggetto Flask. Ogni file caricato viene salvato prima in una posizione temporanea sul server e poi nel percorso finale. Il nome del file può essere codificato in modo statico o può essere recuperato dall'attributo filename dell'oggetto request.files[file]. Tuttavia, si consiglia di utilizzare la funzione secure_filename() per ottenere la versione sicura.

VariabileSpiegazione
app.config['UPLOAD_FOLDER']Definire il percorso della cartella di upload
app.config['MAX_CONTENT_PATH']Specificare la dimensione massima del file da caricare - in byte

Il seguente codice ha la regola dell'URL: /upload, che visualizza il file upload.html nella cartella templates e la regola dell'URL => /upload-file che chiama la funzione uploader() per gestire il processo di upload.

upload.html ha un pulsante di selezione dei file e un pulsante di invio.

# Nome File: example.py
# Copyright: 2020 Da w3codebox
# Autore: it.oldtoolbag.com
# Data: 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>Esempio Flask</title>
 </head>
    <body>
      <form action="http://localhost:5000/upload" method="POST"> 
          enctype="multipart/form-data">
          <input type="file" name="file"/>
          <input type="submit" value="Invio"/>
       </form>
    </body>
 </html>

Verrà visualizzato come nella seguente schermata -

Clicca dopo aver selezionato il file InvioIl metodo POST del modulo di formulari chiama l'URL => /upload_file. La funzione di basso livello uploader() esegue l'operazione di salvataggio dei file.

Di seguito è riportato il codice Python dell'applicazione Flask.

# Nome File: example.py
# Copyright: 2020 Da w3codebox
# Autore: it.oldtoolbag.com
# Data: 2020-08-08
from flask import Flask, render_template, request
 from werkzeug import secure_filename
 app = Flask(__name__)
 @app.route('/upload', methods=['GET', 'POST'])
 def upload_file():
     if request.method == 'POST':
         f = request.files['file']
         print(request.files)
         f.save(secure_filename(f.filename))
         return 'file caricato con successo'
     else:
         return render_template('upload.html')
 if __name__ == '__main__':
     app.run(debug=True)

Dopo aver eseguito il programma, eseguire il codice sopra, selezionare un file immagine e quindi fare clic su Carica, ottenere i seguenti risultati -