NodeJS,Express - 将EJS视图渲染到下载文件

时间:2013-10-16 12:22:45

标签: node.js express ejs

我有一个使用EJS模板的NodeJS,Express 3应用程序。我有一个路由,可以“预览”包含已发布的HTML和CSS的一些表单字段。它只是将它们插入并呈现我的preview.ejs模板。

app.post('/preview', function(req, res){

    var htm = req.body.htm;
    var css = req.body.css;

    res.render('preview',{_layoutFile:'', htm:htm, css:css});
});

我现在要做的是一条强制下载文件的类似路线..

app.post('/download', function(req, res){

    var htm = req.body.htm;
    var css = req.body.css;

    // res.download or res.sendfile here ??
});

我看到有res.sendfile()res.download(),但我如何在EJS'预览'视图模板中使用这些?

P.S。 - 我也在使用Mikeal request这个应用程序。我想知道是否有一种方法可以使用管道到fs(文件系统),然后强制下载保存的文件?

1 个答案:

答案 0 :(得分:2)

请参阅:http://expressjs.com/api.html#res.attachment

res.attachment()设置Content-Disposition: attachment标题,告诉浏览器将响应视为下载。

app.post('/download', function(req, res){

    var htm = req.body.htm;
    var css = req.body.css;

    res.attachment();
    res.render('preview',{_layoutFile:'', htm:htm, css:css});
});