代码之家  ›  专栏  ›  技术社区  ›  Setu Kumar Basak

如何在Ionic 2/3中向NavController发送大型Base64数据?

  •  0
  • Setu Kumar Basak  · 技术社区  · 8 年前

    我正试图发送 Base64 数据作为字符串发送到另一个页面,使用 NavController 使用以下代码:

      ConvertHTMLToPDF = () => {
        let htmlGrid = document.getElementById('customContent');
        const options = {background: "white", height: htmlGrid.clientHeight, width: htmlGrid.clientWidth};
        html2canvas(htmlGrid, options).then((canvas) => {
          let doc = new jsPDF("p", "mm", "a4");
          let imgData = canvas.toDataURL("image/PNG");
          //Add image Canvas to PDF
          doc.addImage(imgData, 'PNG', 20, 20);
    
          let pdfData = doc.output('datauri');
          let obj = {PDFSrc: pdfData};
          this.navCtrl.setRoot('SaveConsentLetterPage', obj);
        });
      };
    

    当Base64数据的大小很小时(如 3Kb 或 4Kb . 但是,当数据如下 1.2Mb ,导航控制器可以重定向到SaveApprovementLetterPage。它会使应用程序崩溃。

    为什么会这样?发送数据是否有任何限制 setRoot 转到中的另一页 Ionic 2/3 ?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Setu Kumar Basak    8 年前

    实际上,问题出在下面一行:

    let pdfData = doc.output('datauri');
    

    这将在中打开数据uri/pdfData 当前窗口 因此,阻止进入下一页。

    但是,下一行只返回数据uri字符串,因此可以轻松地将数据传递到下一页。

    doc.output('datauristring');