nodejs - 如何读取和输出jpg图像?

时间:2012-03-02 22:02:25

标签: node.js filesystems

我一直试图找到一个如何读取jpeg图像然后显示图像的示例。

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/');

尝试了以下代码,但我认为编码需要设置为缓冲区。使用console.log输出数据的'Object'。

2 个答案:

答案 0 :(得分:64)

以下是如何阅读整个文件内容,如果成功完成,请启动一个显示JPG图像以响应每个请求的网络服务器:

var http = require('http')
  , 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/');
});

请注意,服务器由“readFile”回调函数启动,响应标头为Content-Type: image/jpeg

[编辑] 您甚至可以使用带data URI source<img>将图片直接嵌入HTML页面。例如:

  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>');

答案 1 :(得分:0)

要记住两件事内容类型编码

1)如果文件是css

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

2)如果文件是jpg / png

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

上面只是一个示例代码来解释答案,而不是确切的代码模式。