javascript - 将 Canvas 图像保存到服务器

标签 javascript php html canvas

我正在尝试将 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.';
?> 

最佳答案

首先,您必须确保在定义 canvas 变量 和创建 >dataURL

其次,您似乎正在此 php 行中寻找 img:

$img = $_POST['img'];

但是在你的 javascript 中你将它定义为 imgBase64 in:

data: { 
   imgBase64: dataURL
}

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

关于javascript - 将 Canvas 图像保存到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213366/

相关文章:

javascript - 正则表达式在 IE8 中不起作用

javascript - jQuery 验证弹出窗口 : Removing element's style class

javascript - 如何取消选择 jQuery Selectable 中的元素?

php - 当Mysql查询包含 "SELECT * FROM..."时,可以使用哪个函数代替 get_result() ?

php - 使用mysql从单个查询中的两个不同表中进行选择

html - 使用 HTML & CSS3 : How to extend the borders of the inner table vertically, 使其触及外表

javascript - 根据每个选项的值或 ID 过滤选择框

php - Mailgun 内联图像,它是如何工作的?

html - 最小化窗口时背景最小化

jquery - 在页面底部放置一个不隐藏元素的栏 -