我有一张图片pic.jpeg,我必须在浏览器上显示。这是我写的代码片段。
var mimeTypes = {
'.js' : 'text/javascript',
'.css' : 'text/css',
'.gif' : 'image/gif',
'.jpeg': 'image/jpeg',
'.html': 'text/html'
};
contenttype = mimeTypes[path.extname(req.url)];
pathname = "." + req.url;
var stream = fs.createReadStream(pathname);
stream.on('error', function(error) {
res.writeHead(500);
res.end();
return;
});
res.setHeader('Content-Type', contenttype);
res.writeHead(200);
stream.on('open', function () {
// This just pipes the read stream to the response object (which goes to the client)
util.pump(stream, res, function(error) {
//Only called when the res is closed or an error occurs
console.log("Error:");
res.end();
return;
});
});
以上代码大部分时间都有效,图像显示应该如此,但有时图像丢失。
答案 0 :(得分:2)
您不应该通过node.js提供静态文件。您应该考虑使用Nginx或类似的Web服务器。
或者,您可以使用connect
模块来提供静态文件
var server = connect()
.use('/static', connect.static(__dirname + '/static'))
.use(router)
.listen(port);
创建一个名为static
的新目录并将所有文件放入其中,以便您可以/static/images/testimage.jpg
答案 1 :(得分:0)
为什么不使用像Express这样的库,而不是自己实现静态文件?您可以在此处看到:Express Static nodejs或在此处查看API:http://expressjs.com/api.html(搜索“静态”)。这将是更少的代码和可靠的。