提问者:小点点

NodeJS,Express-将EJS视图呈现到下载文件


我有一个使用EJS模板的NodeJS、Express3应用程序。我有一个路线,使‘预览’一些表单字段包含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“预览”视图模板一起使用呢?

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


共1个答案

匿名用户

参见: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});
});