Bild in Mongo (GridFS) mit Knoten + Jade + Express rendern

8

Ich habe eine kleine PNG-Datei in Mongo mit GridFS gespeichert. Ich möchte das Bild in meinem Webbrowser mit Node + Express + Jade anzeigen. Ich kann das Bild fein erhalten, z. B .:

%Vor%

aber ich weiß nicht, wie man es mit der Jade View Engine rendert. Es scheint keine zu geben Informationen in der Dokumentation.

Kann mir jemand in die richtige Richtung zeigen?

Danke!

    
Click Ahead 23.03.2012, 18:23
quelle

2 Antworten

16

Ich habe das herausgefunden (danke Timothy!). Das Problem war mein Verständnis all dieser Technologien und wie sie zusammenpassen. Für alle anderen, die Bilder von MongoDB GridFS mit Knoten, Express und Jade anzeigen möchten ...

Mein Dokument in MongoDB hat einen Verweis auf das in GridFS gespeicherte Bild, das als Objekt-ID gespeichert ist ein Faden. z.B. MyEntity {ImageId: '4f6d39ab519b481eb4a5cf52'} & lt; - NB: String-Darstellung von ObjectId. Der Grund, warum ich es als String gespeichert habe, war, dass das Speichern der ObjectId mir Schmerzen bereitete im Routing, da es als Binärdarstellung gerendert wurde und ich nicht herausfinden konnte, wie ich das beheben kann. (Vielleicht kann hier jemand helfen?). Wie auch immer, die Lösung, die ich habe, ist unten:

FileRepository - Rufen Sie das Image von GridFS ab, ich übergebe eine String-ID, in die ich dann konvertiere eine BSON ObjectId (Sie können die Datei auch nach Dateinamen erhalten):

%Vor%

Jade-Vorlage - Rendert das HTML-Markup:

%Vor%

App.JS-Datei - Routing (mit Express) Ich habe die Route '/ data /: imgtag' für dynamische Bilder eingerichtet:

%Vor%

Und das hat den Job gemacht. Bei Fragen lassen Sie mich wissen:)

    
Click Ahead 24.03.2012, 03:30
quelle
8

Ich bin ein wenig verwirrt darüber, was Sie hier versuchen, da Jade eine verfeinerte Auszeichnungssprache für die Textausgabe (wie HTML) ist, nicht binärer Inhalt.

Da Sie Jade benutzen, haben Sie wahrscheinlich so etwas:

%Vor%

Versuchen Sie es also:

%Vor%

Damit wird die RAW-Datei als Antwort auf die HTTP-Anfrage mit dem korrekten MIME-Typ gesendet. Wenn Sie mit Jade eine Vorlage (z. B. ein Bild-Popup) erstellen möchten, können Sie eine andere Route für das Popup verwenden oder sogar ein data: uri verwenden und die Bilddaten auf der Seite codieren.

    
Timothy Meade 23.03.2012 21:12
quelle

Tags und Links