您能帮我在Node.js中下载文件并将页面重定向到前端吗?我正在使用MERN堆栈(Mongo,Express,React,Node)。
使用Google Auth进行身份验证后,我想在Node中下载文件,然后重定向页面。
router.get(
'/auth/google/callback',
passportGoogle.authenticate('google', {
failureRedirect: '/',
}),
(req, res) => {
try {
var file = 'resume.pdf';
res.download(file, (err => {
if (err) {
console.log(err)
} else {
window.location.href = '/';
}
}));
}
);
我尝试了这段代码,但是下载后并没有将页面重定向到前端。
答案 0 :(得分:0)
(req, res) => {
try {
var file = 'resume.pdf';
res.download(file, (error => {
if (!error) {
window.location.replace("http://stackoverflow.com");
} else {
console.log(error)
}
}));
}
catch {
console.log(error)
}
答案 1 :(得分:0)
由于标头已经与下载响应一起发送,因此您必须走的路径与此不同。
您需要自己更改响应。
var data = //filedata
res.set({
Content-Type: 'text/plain',
Location: '/'
});
res.end(data);
相应地利用Location标头进行重定向。 在客户端上,您将要使用:
window.location.replace("/headerLocation");
您希望在成功下载pdf方法的回调后在客户端上使用此功能。
获取窗口未定义的原因是因为您试图在Node.js服务器上执行此操作。该窗口对象存在于客户端上。