Nicht in der Lage zu dienen, image (png) node.js und express
Ich untersucht habe ähnliche Fragen auf, SO dass aber noch keine Lösung gefunden zu meinem problem... ich habe eine express-route dienen Bilder aber ich kann es nicht erhalten, um wieder ein Bild, von wo es gespeichert ist. Beachten Sie habe ich eine Anweisung zu erlauben, Anfragen jeglicher Herkunft. Was passiert, ist, dass wenn ich einen Antrag auf http://localhost:8080/images/x10.png
die Antwort, die ich bekommen ist eine leere image-element mit src="http://localhost:8080/images/x10.png
anstelle von http://ubuntubox.dev/images/x10.png
, das ist, wo das Bild ist tatsächlich in der Lage und ist der Weg, den ich bin schließlich die übergabe an die Anfrage-Methode. Was bin ich? Danke.
app.get('/images/*', function(req, res, path){
var imagePath = req.url,
url = 'http://ubuntubox.dev' + imagePath;
request(url, function(error, response, img) {
if(!error && response.statusCode === 200) {
res.header('Access-Control-Allow-Origin', '*');
res.writeHead(200, {'Content-Type': 'image/png' });
res.end(img, 'binary');
} else if(response.statusCode === 404) {
res.status(404);
res.type('txt').send('oops');
}
});
}).listen(8080, '127.0.0.1');
- Ich vermute, es ist ein problem mit
request()
. Ist, dasshttp.request()
(wenn es ist, es muss behoben werden) oder ist eine benutzerdefinierte Funktion, die Sie definiert haben anderswo?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, ob du immer noch dieses problem haben, aber..
Die Lösung für Ihr problem ist nur darum eine .Rohr(res) und sendet die Datei an die Antwort
app.get('/images/*', function(req, res){ var imgpth = req.url, img = root_path + imgpth; res.sendFile(img); });
Dachte nur das für mich in express 4
user2879041 bereits beantwortet hat, was er nützlich findet, trotzdem würde ich denken, einen anderen Weg für die Zustellung von Bildern, (wo ich werde nicht schreiben, eine route für jede Datei manuell und senden Sie die Datei an den browser).
Als Sie bereits express, nur server tyhe statische Bilder direkt, Sie haben, bekam schon, dass in
express.static
profitieren mit express.statische ist, dass Sie nur halten Sie das hinzufügen der Bilder in den Ordner, den Sie möchten, statisch zu sein und auszudrücken, dienen die Bilder für Sie(keine Notwendigkeit für jeden code).
Wenn Sie möchten, um zu dienen, Bilder und andere Elemente in einer Weise, die Sinn macht und nicht erforderlich ist, Sie schreiben von einer million Routen, versuchen Sie dies:
app.use(express.static('public'))
Ihres Vermögens sollten verfügbar sein, etwa so:
Ein Source: https://expressjs.com/en/starter/static-files.html