【问题标题】:NodeJS, Express - Render EJS view to a download fileNodeJS, Express - 将 EJS 视图渲染到下载文件
【发布时间】:2013-10-16 12:22:45
【问题描述】:

我有一个使用 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“预览”视图模板一起使用?

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

【问题讨论】:

  • 您应该能够将来自 request 的响应直接通过管道传输到 Express 响应对象:res.attachment(); request(...).pipe(res);

标签: node.js express ejs


【解决方案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});
});

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多