Herunterladen einer Datei mit Flask
Mit dieser Erklärung lernen wir, wie man einen Download-Link erstellt, um eine Datei als Anhang herunterzuladen, indem man die Funktion send_file
in Flask verwendet.
Herunterladen einer Datei als Anhang mit Hilfe der Funktion send_file
in Flask
Im Flask Framework können wir einen Datei-Downloader erstellen, um alle Arten von Dateien wie PDF, JPEG, MP3 oder andere Dateien herunterzuladen, aber die Logik bleibt konstant. Jetzt müssen wir nur noch zu unserem Texteditor gehen und eine einfache app.py
-Datei im selben Verzeichnis erstellen, in dem sich unsere PNG-Datei befindet.
Jetzt müssen wir auch einen Vorlagenordner erstellen, und darin erstellen wir eine index.html
-Datei, und das war’s. Jetzt müssen wir zunächst die Flask-Bibliothek importieren.
Sie benötigen nur einige erforderliche Bibliotheken und die Bibliothek send_file
:
from flask import Flask, render_template, send_file
Wir müssen eine app
-Variable erstellen und die Flask-Anwendung mit dem __name__
-Attribut initialisieren. Jetzt werden wir unsere Hauptfunktion initialisieren, und wir müssen nur die Funktion run
innerhalb dieses Blocks aufrufen und ihr debug
gleich True
übergeben, sodass die Anwendung neu gestartet wird, wenn wir Änderungen vornehmen.
app = Flask(__name__)
if __name__ == "__main__":
app.run(debug=True)
Wir müssen eine Route und eine Funktion zum Laden der HTML-Datei erstellen. Dazu erstellen wir eine Home-Route mit dem Namen /
, und wenn wir diese Route erreichen, wird eine Funktion aufgerufen, die Main_Page()
wäre.
Diese Funktion gibt render_template()
zurück; Darin übergeben wir die Datei index.html
, die die in der Datei index.html
gespeicherte Vorlage lädt.
@app.route("/")
def Main_Page():
return render_template("index.html")
Jetzt schreiben wir eine grundlegende Vorlage, die die heruntergeladene Datei enthält.
Wir werden nur wenige Tags verwenden, das erste ist ein <h2>
-Tag, das die Überschrift enthält, und das zweite ist ein <p>
-Tag, das ein Absatz-Tag ist. Innerhalb dieses Tags verwenden wir das Anker-Tag, und das Attribut href
entspricht einer Eigenschaft, die url_for
ist, und übergibt ihr ihren Namen.
<h2>Downloqad this file</h2>
<p> <a href="{{url_for('Download_File')}}">Download</a></p>
Wenn wir diese Anwendung ausführen und localhost 5000
öffnen, teilt sie uns mit, dass sie keine URL für den Endpunkt Download_File
erstellen konnte.
Diese Syntax url_for('Download_File')
sucht nach einer Download-Datei, also müssen wir dazu nur eine Get-Anfrage stellen.
Jetzt erstellen wir eine weitere Route, /download
. Und wir erstellen eine Funktion mit demselben Namen, den wir in der Eigenschaft url_for()
angegeben haben.
Jetzt müssen wir den Pfad der Datei angeben, also erstellen wir eine Variable namens PATH
und speichern den Pfad in dieser Variablen.
Wir senden die Datei mit der Funktion send_file()
zurück, die zwei Parameter benötigt. Der erste ist ein Pfad und der zweite ist as_attachment
gleich True
, weil wir eine herunterladbare Datei als Anhang erstellen möchten.
@app.route("/download")
def Download_File():
PATH = "Flask-logo.png"
send_file(PATH, as_attachment=True)
Wenn wir die Seite speichern und aktualisieren, sehen wir, dass sie in einen Hyperlink umgewandelt wird, und wir können die Datei herunterladen, indem wir auf diesen Link klicken.
Vollständiger Python-Code:
from flask import Flask, render_template, send_file
app = Flask(__name__)
@app.route("/")
def Main_Page():
return render_template("index.html")
@app.route("/download")
def Download_File():
PATH = "Flask-logo.png"
return send_file(PATH, as_attachment=True)
if __name__ == "__main__":
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn