我想学习如何在不使用像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?
答案 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自己使用的。