节点JS / Express渲染html,然后下载一个文件相同的GET请求

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

我想都使用快速静态渲染一个Handlebar模板,并使用相同的需求stream来下载一个文件。 我知道请求不能设置两次,所以我怎么能解决这个使用一个GET? 下载可能需要一些时间才能下载,因此在用户单击电子邮件链接后需要login页面,但我也需要下载文件的请求。

提前感谢您的任何想法。 陷在这一个。

例如:

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); 

我认为这是不可能发送页面和文件在同一时间,但任何解决scheme存在:

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

  • 或者,用黑客,你可以发送文件在HTML中,然后将其保存在客户端与数据URI 在这里看到 (工作文本文件,但我不知道其他文件types)(使用一个GET!)

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


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

Interesting Posts