Node.js React.js-在onclick()事件上从签名的S3URL下载文件

Node.js React.js-在onclick()事件上从签名的S3URL下载文件,node.js,reactjs,meteor,amazon-s3,Node.js,Reactjs,Meteor,Amazon S3,我有一个签名的AmazonS3URL,指向桶中的PDF文件 我想下载此文件,而不是在单击按钮时重定向/显示它 我想是这样的 Router.route('download', { path: '/d/:signedURL', onAfterAction: function() { var req = this.request; var res = this.response; res.setHeader('Content-disposition', 'attach

我有一个签名的AmazonS3URL,指向桶中的PDF文件

我想下载此文件,而不是在单击按钮时重定向/显示它

我想是这样的

Router.route('download', {
  path: '/d/:signedURL',
  onAfterAction: function() {
    var req = this.request;
    var res = this.response;

    res.setHeader('Content-disposition', 'attachment; filename=' + this.params.signedURL);

    console.log(req, res);


  }
}, {where: 'server'});
但是不能让它工作,有什么建议吗

编辑:


尝试将您的服务器路由定义为HTTP GET restful路由,我认为您缺少res.end来确认发送给客户端的响应

Router.route("/d/:signedURL",{
  name:"download",
  where:"server"
}).get(function(){
  var req = this.request;
  var res = this.response;
  res.setHeader('Content-disposition', 'attachment; filename=' + this.params.signedURL);
  res.end();
});

本例中的文件名是用户将下载的文件名。它不是一个URL。看见我认为实现这一点的唯一方法是实际预下载带有签名URL的文件,然后将其返回给用户。如果您认为这是一个可接受的解决方案,我可以给出一个答案。这会对服务器的性能造成重大影响吗?请这样做,我将不胜感激
Router.route("/d/:signedURL",{
  name:"download",
  where:"server"
}).get(function(){
  var req = this.request;
  var res = this.response;
  res.setHeader('Content-disposition', 'attachment; filename=' + this.params.signedURL);
  res.end();
});