2014-01-30 85 views
0

我正在使用node.js和express作为特殊的web服务器。它大部分不会覆盖标准网络服务器所做的工作,但对于一小部分我需要它像一个普通的网络服务器一样工作,所以读取一个文件,将其内容用适当的MIME类型发送到客户端,就是这样。目前我的代码如下所示:mime type node.js express

app.get('/ui/*', function(req, res) { 
    var file = '../M4Editor/data' + req.url; 
    fs.readFile(file, { encoding: "utf8" }, function(err, data) { 
     if(err) { 
      res.send(404); 
      return; 
     } 

     res.type(mime.lookup(file)); 
     res.send(data.toString()); 
    });  
}); 

mime.lookup返回正确的结果。我还尝试了使用res.send(new Buffer(data.toString(),'utf8'))和mime类型res.set('Content-Type',...),res.header(...)之前设置。无论我在Chrome中如何处理它的allways text/html。如果我检查返回的标题,甚至没有头中的Content-Type字段。

我在这里做错了什么?感谢您的建议。

+0

用'curl -v http:// yourapp/ui/your/path'测试。上面的代码看起来应该正确地设置响应Content-Type头,但是有时候chrome的工具会掩盖可能会引起误解的事情。 –

+0

感谢您的建议,它也没有显示MIME类型的Iive集。但请参阅我对答案的回复。 – Cromon

回答

0

我的建议,为什么不使用Express static middleware

app.use('/ui', express.static(__dirname + '../M4Editor/data')); 

它应该为您处理404错误,缓存,MIME类型等。