我在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服务器错误的原因。
控制台未打印“无法保存文件”,也未打印“已保存”。
答案 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.';
?>