在Node中下载PDF文件并重定向到前端React

时间:2019-04-10 15:55:32

标签: javascript node.js reactjs

您能帮我在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 = '/';
          }
        }));
    }
);

我尝试了这段代码,但是下载后并没有将页面重定向到前端。

2 个答案:

答案 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服务器上执行此操作。该窗口对象存在于客户端上。