如何从节点js渲染或下载pdf以响应js?

时间:2020-06-08 15:31:49

标签: javascript node.js reactjs

我无法打开从服务器获取的前端react js上的pdf文件,但是当我在前端react中给console.log(response.data)时,我可以在响应中看到一些数据js。但我不知道如何在新窗口中将其显示为pdf或在前端下载。

这是我发出请求的前端。

export const fetchResult=(resultData)=>async(dispatch)=>{
    await mysqlDB.post('/result/fetch',{
        params:resultData,
        headers:{
            Accept:'application/pdf',
            contentType:'application/pdf'
        }
    })
    .then((response)=>{
        console.log(response);
        if(response.data !== {}){
           window.open(response.data);
            dispatch( {
                type: ActionTypes.FETCH_TOURNAMENT_RESULT_SUCCESS,
                payload:response.data 
            });
            console.log("Fetched Results")
        }else{
            dispatch({type:ActionTypes.FETCH_TOURNAMENT_RESULT_FAILED});
            console.log("failed to fetch results")
        }
    })
    .catch((error)=>console.error(error));
};

这是我试图将pdf发送到前端的nodejs。

app.post('/result/fetch',(request, response) => {
    console.log(request.body);

    const {tournament_id,section,round,type}=request.body.params;
    const data = fs.readFileSync(`${__dirname}/../results/${tournament_id}/${section}/${round}/${type}.pdf`);
    response.contentType("application/pdf");
    response.send(data);

  });

0 个答案:

没有答案