0

我有一个图像 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;
                });
            });

上面的代码在大多数情况下都可以正常工作,并且图像会按原样显示,但有时图像会丢失。

4

2 回答 2

2

您不应该通过 node.js 提供静态文件。您应该考虑使用 Nginx 或类似的 Web 服务器。

或者,您可以使用connect模块来提供静态文件

var server = connect()
  .use('/static', connect.static(__dirname + '/static'))
  .use(router)
  .listen(port);

创建一个名为的新目录static并将所有文件放入其中,以便您可以通过以下方式访问它们/static/images/testimage.jpg

于 2013-02-18T13:11:27.827 回答
0

与其实现为自己服务的静态文件,不如使用 Express 之类的库?您可以在此处看到正在使用的:Express Static nodejs或在此处查看 API:http: //expressjs.com/api.html(搜索“静态”)。它会少很多代码,而且可靠。

于 2013-02-18T13:10:18.337 回答