Kolben zurückzukehren Bild in der Datenbank gespeichert
Meine Bilder gespeichert sind, in eine MongoDB und möchte ich diese an den client zurückzugeben, hier ist, wie der code ist wie:
@app.route("/images/<int:pid>.jpg")
def getImage(pid):
# get image binary from MongoDB, which is bson.Binary type
return image_binary
Jedoch, es scheint, dass ich nicht mehr zurück können binäre direkt in der Flasche? Meine Idee bisher:
- Rückkehr der
base64
des Bildes binäre. Das problem ist, dass IE<8 nicht unterstützt werden. - Erstellen Sie eine temporäre Datei dann wieder mit
send_file
.
Gibt es bessere Lösungen?
- mögliche Duplikate von Wie die Rückkehr der Bilder in Fläschchen Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie ein Antwort-Objekt mit den Daten und dann die content-type-header. Die content-disposition-header, um
attachment
wenn Sie wollen, dass der browser die Datei zu speichern, anstatt es anzuzeigen.Relevant: werkzeug.Header und Kolben.Antwort
Können Sie ein Datei-wie oject und die header-Argumente zu
send_file
lassen Sie es gesetzt, bis die vollständige Antwort. Verwendenio.BytesIO
für binäre Daten:b'<binary image data>'
), kann in einerUnicodeError
.send_file()
kann nur besser werden.with
- Klausel?Wollte nur bestätigen, dass dav1d ' s zweiter Vorschlag ist richtig - getestet habe ich diese (wo obj.logo ist eine mongoengine ImageField), funktioniert gut für mich:
Einfacher als das manuelle erstellen eines Response-Objekts und die Einstellungen für die Kopfzeilen.
Nehme an, dass ich das gespeicherte Bild Weg mit mir. Der folgende code hilft, senden Bild durch.
uploads ist mein Ordner Namen wo mein Bild mit 123.jpg vorhanden ist.
[PS: Der Ordner "uploads" sollte im aktuellen Verzeichnis wie die Skriptdatei]
Hoffe, es hilft.