【问题标题】:Save canvasJS charts to server directory将 canvasJS 图表保存到服务器目录
【发布时间】:2021-09-13 07:32:10
【问题描述】:

如何使用 PHP 将导出的 canvasJS 图表保存到服务器端目录?

创建饼图时没有问题,使其可导出,直接使用内置js函数导出:

function ajaxGrafTarta(llamada,titulo){
    $.ajax({
        url: "dashboard.php",
        data: {
            llamada: llamada
        },
        type: "GET",
        dataType: "json",
        success: function (data) {
            var chart = new CanvasJS.Chart(llamada, {
                animationEnabled: true,
                exportEnabled: true,
                exportFileName: llamada,
                title: {
                    text: titulo
                },
                data: [{
                    type: "pie",
                    startAngle: -90,
                    yValueFormatString: "#,##0.00\"%\"",
                    indexLabel: "{label} ({y})",
                    dataPoints: data
                }]
            });
            chart.render();

            chart.exportChart({format: "jpg"});
        }
    });
}

我的目标是将 js 创建的文件保存到我服务器的目录中(我知道 js 是客户端),有什么办法吗?

【问题讨论】:

    标签: javascript php export canvasjs


    【解决方案1】:

    对于任何面临这个问题的人,我设法解决了它。我使用toDataURL() JS 函数遍历了我所有的画布,然后通过 AJAX 发送它们。我首先在我的 JS 中发送 PNG 格式的图像数据:

    $("canvas").each(function() {
       var dataURL = ($(this)[0]).toDataURL("image/png");
    
       if(dataURL.indexOf("AAAAAAAA") == -1){
         var filename = $(this).parent().closest('.grafico').attr('id') + ".png";
         $.ajax({
            url: "guardar_graficos.php",
               data: {
                   image: dataURL,
                   filename: filename
                   },
                   type: "POST",
                   dataType: "image/png"
                }); 
              }
          });
    

    然后使用 PHP 在服务器端捕获并保存它:

    $upload_dir = "foo/";
    $iid = $_POST['image'];
    $filename = $_POST['filename'];
    $img_encode = str_replace('data:image/png;base64,', '', $iid);
    $img = str_replace(' ', '+', $img_encode);
    $data = base64_decode($img);
    $file = $upload_dir.$filename;
    unlink($upload_dir.$filename);
    file_put_contents($file, $data);
    

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2019-12-20
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 2011-03-18
      • 2011-12-04
      相关资源
      最近更新 更多