搜索

首页  >  问答  >  正文

在React端下载时,如何将缓冲区转换为文件

<p>我正在使用<a href="https://www.npmjs.com/package/convert-html-to-pdf">https://www.npmjs.com/package/convert-html-to-pdf</a>来在nodejs中将html转换为pdf。我有一个react前端和nodejs后端。我想将缓冲区转换为一个文件,以便在react端供用户下载。我应该如何做?我不想在我的服务器上保存文件。</p>
P粉006847750P粉006847750457 天前592

全部回复(1)我来回复

  • P粉020556231

    P粉0205562312023-09-02 19:51:17

    我们可以设置头部 Content-disposition attachment 来指示响应是一个可下载的文件。

    后端:Express示例

    const htmlToPDF = new HTMLToPDF(`
      <div>Hello world</div>
    `);
    
    const buffer = await htmlToPDF.convert();
    
    res.set("Content-Disposition", `attachment; filename="test.pdf"`);
    res.set("Content-Type", "application/pdf");
    
    res.send(buffer);

    前端:React示例

    const submit = () => {
      window.open("http://localhost:8000"); // 在此处填写您的端点
    };
    
    return (
      <button onClick={submit}>下载</button>
    );

    如果端点是POST方法,则 window.open 将无法工作。我们必须使用一个表单:

    <form action="http://localhost:8000" method="POST">
      <button type="submit">下载</button>
    </form>

    回复
    0
  • 取消回复