2017-04-04 6 views
1

Ich habe einen lokalen Express-Server, der eine JSON-Datei dient. Ich habe auch viele Bilddateien in einem lokalen Ordner. Die Bildpfade sind Teile des JSON-Objekts, das ich in meinem DOM anzeigen möchte. Allerdings erhalte ich eine String-Darstellung dieser Bildpfade als Teil der Antwort, die ich nicht verwenden kann. Was ist der beste Weg, lokale Bilder von einem lokalen Server auf das Frontend zu portieren?Get Real Image Pfad von JSON Antwort

Ein Bild von der Ausgabe: enter image description here

Meine Server-Seite config:

app.use(express.static(path.join(__dirname, 'public'))) 
 
app.use(express.static(path.join(__dirname, 'server/img')))

Meine JSON-Datei

{ 
 
    "Images": [{ 
 
    "title": "First Block", 
 
    "images": ["server/img/bijay.jpg", "server/img/dance.png", "server/img/ocean.jpg"] 
 
    }, {obj2}, {obj3}, {obj4}] 
 
}

Mein clientseitigen Code Bild

<ul> 
 
    <li ng-repeat="obj in objArray"><img ng-src="{{obj.images[0]}}"></li> 
 
</ul> 
 
// just testing first image

Meine Ordnerstruktur drucken:

images are inside img folder. not shown to save space

Im Alter ist in der IMG-Ordner.

Platz in einem ‚öffentlichen‘ Ordner die Bilder: hier nicht Raum auf die Kommentare von @Tolsee

+0

Es scheint, dass das angegebene Element den absoluten Pfad des Bildes darstellen, verwenden Sie einfach 'src' zum Rendern Absolute URL – Tolsee

+0

es gibt mir jedoch eine 404-Status-Antwort für (localhost: //server/img/xyz.jpg) ... Ich denke, es ist ein Problem mit dem Zugriff auf Dateien im Server mit absoluten Pfaden –

+0

Sie sollten die URL zuerst richtig schreiben ..Like http: //localhost/server/img/xyz.jpg – Tolsee

Antwort

2

Endlich nach viel Umdenken fand ich die Lösung.

Ich hatte den 'statischen' Ordner auf dem Server als 'server/img' definiert. Innerhalb des Json-Objekts habe ich jedoch den absoluten Pfad für die Bilddateien erneut zugewiesen. Alles, was ich tun musste, war ' server/image/ imgFileName.jpg' den Konflikt zu lösen :))

1

Basierend sparen gezeigt. (/public/img/dance.png) Dann in Ihrer ausdrücklichen App die folgende Zeile:

let app = express(); 
app.use(express.static(path.join(__dirname, 'public'))); 

Die Bilder werden mit der folgenden URL zur Verfügung:

localhost:port/img/dance.png 

Sie könnten nur dienen/server/img und dann einfach folgendes verwenden:

let app = express(); 
app.use(express.static('/server/img')); 

localhost:port/dance.png 

Abhängig von Ihrer Projektstruktur sind möglicherweise einige Konfigurationen erforderlich.

+0

ahh ich verstehe. Ich hatte die gleiche Konfiguration von statischen Dateien aus 'öffentlichen' Ordner, aber die Bilder waren in 'Server' Ordner. Also denke ich, dass das Hinzufügen der Zeile app.use (express.static ('/ server/img')) genug wäre ... ich werde es jetzt überprüfen –

+0

Ich kann keine Bilder in den öffentlichen Ordner stellen, da ich emulieren muss, als ob die Bilder stammen von einem Server –

+0

Welche URL verwenden Sie, um die Bilder abzurufen? Wenn Sie dennoch mit localhost/server/img darauf zugreifen möchten, müssen Sie zu app.use ('/ server/img', express.static ('/ server/img')) wechseln; –