Node JS / Express渲染html,然后下载同一GET请求的文件

时间:2015-08-18 01:14:36

标签: node.js express header reply

我想通过电子邮件链接发送目标网页,并使用相同的GET附加文件下载。

我想使用Express Static渲染Handlebar模板,并使用相同的Req流来下载文件。我知道请求不能设置两次,所以如何使用一个GET来解决这个问题?下载前可能需要一些时间进行准备 - 所以在用户点击电子邮件链接后需要登陆页面 - 但我也需要下载文件的请求。

提前感谢您提出的任何想法。坚持这个。

例如:

app.get('/download a file from email link', function (req, res, next) {

res.render('index') // replies w Template rendered Express...

然后在设置标头后,在标题回复到相同的GET后下载文件:

res.attachment('file');
res.send(data for download);

1 个答案:

答案 0 :(得分:1)

我认为不可能同时发送页面和文件,但任何解决方案都存在:

  • 在页面中使用iframe从服务器下载文件: <iframe style="display:none;" src="http://URL_OF_FILE_TO_DOWNLOAD"></iframe>(不使用一个GET :()
  • 用户元刷新以重定向到要下载的文件: <meta http-equiv="refresh" content="0; URL=http://URL_OF_FILE_TO_DOWNLOAD">(使用一次GET,但两次请求*)

  • 或者,使用hack,您可以在html中发送文件,然后将其保存在客户端,并使用数据URI see here(适用于文本文件,但我不知道其他文件类型)(使用一个GET!)

*使用元重定向方法,如果您绝对想从同一个URL下载,请在使用req.headers.referer重定向后使用referer确定原点,然后如果它等于您的页面,则发送文件,否则,发送你的页面

这是我在本网站上的第一个答案