快速渲染视图并同时下载文件

时间:2018-08-31 09:55:58

标签: javascript node.js express ejs

我想使用express渲染文件并同时下载文件

我当前的代码如下:

res.attachment('filename.csv');
res.render('pages/result', { data });

但是,如果我这样做,它只会下载数据而不会呈现视图

我想要呈现一个成功页面,然后发送文件以便下载

我需要使用1个端点来完成此操作,因为我需要生成文件,并且只有在文件成功的情况下,我才会呈现成功页面

我可以使用1个端点执行此操作吗?

谢谢

2 个答案:

答案 0 :(得分:0)

不要认为在1个端点中都可以做到。您可以做的是,每当您要下载文件时,都放置一个js代码以有条件地将文件下载到ejs模板中,以便仅在需要时才下载。

答案 1 :(得分:0)

将文件的路径作为变量发送到渲染页面,并使用javascript编写函数以自动下载文件。

res.render('pages/result', { path: '../folder/filename.csv'});

呈现页面上

<iframe id="my_iframe" style="display:none;"></iframe>
<script>
function Download(url) {
    document.getElementById('my_iframe').src = #{path};
};
</script>

Download File Using Javascript/jQuery