当前位置: 首页 > 知识库问答 >
问题:

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

太叔志尚
2023-03-14

我有一个使用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个答案

缑勇锐
2023-03-14

参见: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});
});
 类似资料:
  • 我正在节点服务器上使用express ejs在多视图应用程序中呈现视图。在客户端,我使用的是AngularJS。初始视图是一个登录页面,当使用时,该页面会正确显示。我想在用户成功连接时呈现一个新的视图,但是对于下一个,它仍然停留在登录页面上,尽管我在客户端接收到了正确的HTML。下面是我的相关代码: 部分文件结构: server.js Script.js login.ejs Home.ejs 这是

  • 问题内容: 在我的index.ejs中,我有以下代码: 在我的节点中 但是,我在页面上获得 如果我写 我得到: 有没有一种方法可以传递 JS可读 的JSON ? 问题答案: 哦,那很容易,不要使用,而是使用。例如: 第一个将以HTML呈现,第二个将呈现变量(按原样评估)

  • 问题内容: 如何将服务器中的文件下载到访问nodeJS服务器中页面的计算机上? 我正在使用ExpressJS,并且一直在尝试这样做: 但是我无法获取文件名和文件类型(或扩展名)。有人可以帮我吗? 问题答案: 更新资料 Express 为此提供了一个帮助,使生活更加轻松。 旧答案 就您的浏览器而言,该文件的名称仅为“下载”,因此您需要使用另一个HTTP标头为其提供更多信息。 您可能还想发送一个mim

  • 问题内容: 我正在使用Node.js的Forms库(Forms),它将在后端为我呈现一个表单: 最后一行创建一个HTML块,如下所示: 基本上只是一长串HTML。然后,我尝试使用EJS和Express通过以下代码进行渲染: 但是在渲染HTML时,只是我上面发布的字符串,而不是实际的HTML(因此是我想要的一种形式)。有什么方法可以使用EJS将字符串呈现为实际的HTML?还是我必须使用类似Jade的

  • 问题内容: 朋友们,美好的一天! 首先,对不起我的英语。这是我的问题: 我是JSF(2.0)的新手,我正尝试使用BalusC算法从托管bean下载文件。功能正常运行,浏览器中出现“另存为…”对话框。但是我不知道如何在不重新加载/重定向视图的情况下返回文件下载错误消息(后备bean方法中的异常,DB错误等)。 我在视图上的隐藏按钮: 我的托管bean(我可以使用哪个范围?我尝试过请求并查看范围)方法

  • 问题内容: 如何以嵌套形式呈现多个文件? 所以我有以下文件: where 由非常基本的html标记(例如html,head,body和一个标记)组成并包含在其中,其中内容假定由另一个.ejs文件呈现,其中不包含html,head或body标记,仅假定呈现了内容和标题。但是,当我通过POST请求访问此文件并尝试呈现文件,然后从浏览器中签出输出的HTML文件时,内容仅包含文件,这意味着它没有html,