Node.js React.js-在onclick()事件上从签名的S3URL下载文件
我有一个签名的AmazonS3URL,指向桶中的PDF文件 我想下载此文件,而不是在单击按钮时重定向/显示它 我想是这样的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
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();
});