为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 pdf 文件生成器将文件下载到 Go 和 React 中的本地客户端

如何从 pdf 文件生成器将文件下载到 Go 和 React 中的本地客户端

Go
大话西游666 2022-05-18 09:51:07
我创建了一个服务来生成pdf文件go-wkhtmltopdf这是功能func Pdf() func(c *gin.Context) {    return func(c *gin.Context) {        // download wkhtmltopdf and set that wkhtmltopdf on below        wkhtmltopdf.SetPath("/usr/local/bin/wkhtmltopdf")        type ReqHtml struct {            Html string `json:"html"`        }        var html ReqHtml        _ = c.BindJSON(&html)        pdfg, err := wkhtmltopdf.NewPDFGenerator()        if err != nil {            log.Fatal(err)        }        page := wkhtmltopdf.NewPageReader(strings.NewReader(html.Html))        pdfg.Orientation.Set(wkhtmltopdf.OrientationPortrait)        page.FooterRight.Set("[page]")        page.FooterFontSize.Set(10)        pdfg.AddPage(page)        err = pdfg.Create()        if err != nil {            log.Println(err)        }        err = pdfg.WriteFile("./myPdf.pdf")        if err != nil {            log.Fatal(err)        }    }}那个Writefile将文件写入我的根文件夹服务器,如何让客户端下载它?假设我有<button> download file </button>我应该用该结果的缓冲区向客户端做出响应吗?要不然是啥?
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

只需将缓冲区发送到客户端并使用此函数下载文件(React 示例代码):


prepareDocForDownload = result => {

    const length = Object.entries(result.data).length;

    let bytes = new Uint8Array(length);


    for (let i=0; i<length; i++) {

      bytes[i] = result.data[i];

    }


    const file = new Blob(

      [bytes.buffer],

      {type: 'application/pdf'});


    const fileURL = URL.createObjectURL(file);


    const link = document.createElement('a');

    link.href = fileURL;

    link.setAttribute('download', 'file.pdf');

    document.body.appendChild(link);

    link.click();

  };


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号