我想通过电子邮件链接发送目标网页,并使用相同的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);
答案 0 :(得分:1)
我认为不可能同时发送页面和文件,但任何解决方案都存在:
<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确定原点,然后如果它等于您的页面,则发送文件,否则,发送你的页面
这是我在本网站上的第一个答案