Ich bin neu in Python und web2py und habe derzeit ein seltsames Problem. Ich habe Bilder (Bilder) in meiner Datenbank (SQL Server) gespeichert, die ich auf meiner Website anzeigen möchte. Ich habe es geschafft, auf die Datenbank zuzugreifen und die Informationen auf die Webseite zu bringen, aber ich habe Probleme mit den Bildern.Warum kann ich ein Bild nicht von einer Funktion zurückgeben, ohne es vorher in einer Datei zu speichern?
Endlich, nachdem ich lange versucht hatte, konnte ich mein Problem genau lokalisieren, wie im folgenden Code meiner "Download" -Funktion zu sehen ist. Wenn ich versuche, das Bild aus der Datenbank zu lesen und es zurückzugeben, bleibt der Webbrowser hängen und zeigt nichts. Wenn ich das Bild in eine temporäre statische Datei speichere, dann lese es und DANN gib das Ergebnis zurück, alles funktioniert gut.
Meine einzige Vermutung ist, dass es etwas mit Umfang der Variablen zu tun hat, aber ich bin mir nicht sicher. Hier ist mein Code:
def download():
cursor = erpDbCnxn.cursor()
cursor.execute("SELECT Picture FROM KMS_Parts WHERE PartNo = '%s'" % request.args(0))
row = cursor.fetchone()
if row:
dbpic = row.Picture
f = open ("C:/Users/Udi/Desktop/tmp.jpg", "wb") ##This is just for the test
f.write(dbpic) ##This is just for the test
f.close() ##This is just for the test
f = open ("C:/Users/Udi/Desktop/tmp.jpg", "rb") ##This is just for the test
filepic = f.read() ##This is just for the test
f.close() ##This is just for the test
return filepic ##Returning dbpic doesn't work
else:
return
Ist das hilfreich? [web2py img download] (http://stackoverflow.com/questions/12540213/web2py-downloading-files-displaying-images?rq=1) – formatkaka
was ist der Typ von 'dbpic' und' filepic'? Ich würde annehmen, 'filepic' ist ein' bytes' Objekt, aber ich bin nicht sicher über 'dbpic' –
Haben Sie die richtigen Header gesetzt? Wie sehen die Request- und Response-Header im Browser aus? Versuchen Sie, die Bilder als '
' oder als Download-Link einzubinden? –
Torxed