将画布图像保存到服务器

时间:2014-11-30 12:44:21

标签: javascript php html5 canvas

我试图将画布图像保存到服务器。我可以保存文件,但它总是0字节。我的代码出了什么问题?

<script>
function test(){
var canvas  = document.getElementById("cvs");
var dataURL = canvas.toDataURL();

$.ajax({
  type: "POST",
  url: "upload.php",
  data: { 
     imgBase64: dataURL
  }
}).done(function(o) {
  console.log('saved'); 

});

}
</script>

PHP:

<?php    
define('UPLOAD_DIR', 'uploads/');
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?> 

1 个答案:

答案 0 :(得分:4)

首先,你必须确保在> 后定义canvas变量 之前创建了dataURL

其次,看起来你正在寻找这个php行中的img

$img = $_POST['img'];

但是在您的javascript中,您将其定义为imgBase64

data: { 
   imgBase64: dataURL
}

最后,您应该在创建console.log(dataURL)之后添加dataURL,以确保其中包含任何内容。