【问题标题】:Express render view and download file at the same time同时快速渲染视图和下载文件
【发布时间】:2018-08-31 09:55:58
【问题描述】:

我想用 express 渲染一个文件,同时下载一个文件

我目前的代码如下:

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

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

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

我需要用 1 个端点来完成,因为,我需要生成文件,并且只有当它成功时,我才会呈现成功页面

我可以用 1 个端点做到这一点吗?

谢谢

【问题讨论】:

  • res.download 代替res.attachment 怎么样?
  • 文件是动态生成的(csv),所以我不能使用下载,因为我没有保存它,我只是将csv作为文件发送

标签: javascript node.js express ejs


【解决方案1】:

不要认为在 1 个端点上两者都可以。你可以做的是,每当你想下载文件时,在 ejs 模板中放置一个 js 代码来下载文件,以便它只在你想要的时候下载。

【讨论】:

  • 我遇到的问题是,我需要生成文件并进行api调用,只有成功了,我才会渲染成功页面
  • 呈现的页面在您的控制权中,您可以在脚本标签中声明一个带有路径的js变量(使用ejs模板),您已将其包装在ejs的条件中
【解决方案2】:

将文件的路径作为变量发送到渲染页面,并在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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多