无法获取pdf(反应,节点,快速)

时间:2019-10-14 15:36:45

标签: node.js reactjs express pdf

我正在为一个客户端重建一个站点,该站点要求当您单击按钮时,将pdf从服务器发送到前端。我用相同的端点制作了自己的虚拟服务器,以复制服务器的功能,但是我在努力获取pdf。 这是我第一次真正在Web开发环境中使用PDF,因此无知。请相信我已经完成了很多的Google搜索。

我遇到的一些问题是:

  1. 一些消息人士说,只需使用Node and Express发送pdf文件, 使用res.downoad('path / to / filename')但我没有设法得到它 这样工作。
  2. 因为如果我尝试使用带有锚标记的pdf路由来使用React Router,则会重定向到该路由(如果执行e.preventDefault()),则不会发生任何事情。
  3. 其他来源使用AJAX调用来提取pdf,我可以这样做,但是我不知道如何在then块中处理它。
    1. Another source说过,我只需要在前端使用window.open(url),但这也只是遵循React路由器的路线,什么也没做。

pdf路径网址的措辞为“ /historical_report/daily_risk_report_2019_02_18.pdf/fundname” 而且我可以看到该url正在从客户端服务器检索pdf。

我的问题是:

  1. 在React中获取这样的pdf的正确方法是什么?我应该只使用锚标签吗?还是我需要积极使用Fetch / Axios?
  2. res.download是否足以从服务器提供pdf?

我已经尝试在前端使用它:

fetch(
      url,
      {
        method: "GET",
        headers: {
          Accept: "application/pdf",
          "Content-Type": "application/pdf"
        }
      }
    )
      .then(response => {
          console.log(response)
          return response
      })
      .then(response => response.blob())
      .then(response => {
        var blob = response;
        var reader = new window.FileReader();
        reader.readAsDataURL(blob);
        reader.onloadend = function() {
          var base64data = reader.result;

          window.open(base64data);
        };
      })
      .catch(error => {
        console.error(error);
      });

,并在后端:

router.get('my url', (req, res) => {
    res.download('url')
})

但是没有运气(这将返回404错误...)如果有人可以提供一些建议,那就太好了。预先感谢。

0 个答案:

没有答案