使用PHP Error 500在服务器上保存.toDataURL()

时间:2017-06-18 05:36:46

标签: javascript php todataurl

我在GitHub仓库中有这个功能,它将画布上的绘制签名输出到DataURL()。当我检查它时,它会返回一串编码数据(.png)。

用户点击保存按钮会发生这种情况:

saveButton.addEventListener("click", function (event) {
    if (signaturePad.isEmpty()) {
        alert("Please provide signature first.");
    } else {
        saveSignature(signaturePad.toDataURL());
    }
});

function saveSignature(dataURL) {
$.ajax({
  type: "POST",
  datatype: "json",
  url: "script.php",
  data: { 
     imgBase64: dataURL
  }
}).done(function(o) {
  console.log('saved'); 
});
signaturePad.clear();
}

然后它会在同一个文件夹中触发一个PHP脚本,名为script.php

<?php
    // requires php5
    define('UPLOAD_DIR', 'images');
    $img = $_POST['imgBase64'];
    $file = UPLOAD_DIR . uniqid() . '.png';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.';
?>

我无法找出导致500服务器错误的原因。

控制台未打印“无法保存文件”,也未打印“已保存”。

1 个答案:

答案 0 :(得分:1)

script.php您在使用$img写入时$data收到数据时出错,因此需要替换变量

<?php
    // requires php5
    define('UPLOAD_DIR', 'images');
    $img = $_POST['imgBase64'];
    $file = UPLOAD_DIR . uniqid() . '.png';
    $success = file_put_contents($file, $img); //<---- change here
    print $success ? $file : 'Unable to save the file.';
?>