如何使用Node.js提供所有图像

时间:2014-04-05 19:02:31

标签: node.js

我想学习如何在不使用像Express这样的框架的情况下使用Node.js来提供所有图像。我最终会使用Express,但我想知道它是如何工作的。

此问题已在此解决方案之前得到解答:

fs = require('fs');
http = require('http');
url = require('url');


http.createServer(function(req, res){
var request = url.parse(req.url, true);
var action = request.pathname;

if (action == '/logo.gif') {
 var img = fs.readFileSync('./logo.gif');
 res.writeHead(200, {'Content-Type': 'image/gif' });
 res.end(img, 'binary');
 } else { 
 res.writeHead(200, {'Content-Type': 'text/plain' });
 res.end('Hello World \n');
 }
 }).listen(8080, '127.0.0.1');

这个解决方案似乎只处理一个图像,我不想为我拥有的每个图像编写代码。有更好的解决方案吗?

如何投放文件夹中的所有图片?

我在想是否有办法检查请求的扩展名?例如,如果请求的结尾有.png,那么检查images文件夹并使用正确的内容类型image / png?

1 个答案:

答案 0 :(得分:0)

最简单的解决方法是:

if (/.gif$/i.test(action)) {
  var img = fs.readFileSync(action);
  res.writeHead(200, {'Content-Type': 'image/gif' });
  res.end(img, 'binary');
}

虽然我强烈建议使用和/或学习connect.static中间件的源代码。这就是Express自己使用的。