52 votes

nodejs - Comment lire et sortir une image jpg ?

J'ai essayé de trouver un exemple de la façon de lire une image jpeg et de l'afficher.

var http = require('http'), fs = require('fs');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});

fs.readFile('image.jpg', function (err, data) {
  if (err) throw err;
  res.write(data);
});

res.end();
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

J'ai essayé le code suivant, mais je pense que l'encodage doit être défini comme tampon. En utilisant console.log, les données affichent 'Object'.

92voto

maerics Points 47743

Voici comment lire l'intégralité du contenu du fichier et, si cela est fait avec succès, démarrer un serveur web qui affiche l'image JPG en réponse à chaque requête :

var http = require('http')
var fs = require('fs')

fs.readFile('image.jpg', function(err, data) {
  if (err) throw err // Fail if the file can't be read.
  http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'image/jpeg'})
    res.end(data) // Send the file data to the browser.
  }).listen(8124)
  console.log('Server running at http://localhost:8124/')
})

Notez que le serveur est lancé par la fonction de rappel "readFile" et que l'en-tête de réponse a Content-Type: image/jpeg .

[Edit] Vous pouvez même incorporer l'image dans une page HTML directement en utilisant une balise <img> avec un données URI source . Par exemple :

  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('<html><body><img src="data:image/jpeg;base64,')
  res.write(Buffer.from(data).toString('base64'));
  res.end('"/></body></html>');

1voto

user2248133 Points 1

Deux choses à garder à l'esprit Content-Type et le Encodage

1) Que faire si le fichier est css

if (/.(css)$/.test(path)) {
  res.writeHead(200, {'Content-Type': 'text/css'}); 
  res.write(data, 'utf8');
} 

2) Que se passe-t-il si le fichier est jpg/png ?

if (/.(jpg)$/.test(path)) {
  res.writeHead(200, {'Content-Type': 'image/jpg'});
  res.end(data,'Base64');
}

Le code ci-dessus est juste un exemple de code pour expliquer la réponse et non le modèle de code exact.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X