mka*_*yan 5 html javascript php ajax canvas
我在PHP中保存画布图像有问题.我得到一个空白.png文件.我搜索了很多关于这个问题,但是找不到任何有用的东西.为什么它会保存空白图像而不是渲染真实图像?
JavaScript代码:
html2canvas([document.getElementById('dadycool')], {
onrendered: function (canvas) {
var data = canvas.toDataURL();
var image = new Image();
image.src = data;
document.getElementById('imagec').appendChild(image);
console.log(data);
$.ajax({
type: "POST",
url: "up.php",
data: {
imgBase64: data
}
}).done(function(o) {
console.log('saved');
});
}
Run Code Online (Sandbox Code Playgroud)
PHP代码:
<?php
// requires php5
define('localhost/samp/sample2/uploads', 'images/');
$img = $_POST['imgBase64'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = localhost/samp/sample2/uploads . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>
Run Code Online (Sandbox Code Playgroud)
我怀疑您还没有配置您的开发盒来显示 PHP 错误消息。您正在定义一个不是有效标识符的常量:
define('localhost/samp/sample2/uploads', 'images/');
Run Code Online (Sandbox Code Playgroud)
这意味着你不能直接使用它:
$file = localhost/samp/sample2/uploads . uniqid() . '.png';
Run Code Online (Sandbox Code Playgroud)
...应该触发:
Notice: Use of undefined constant localhost - assumed 'localhost'
Notice: Use of undefined constant samp - assumed 'samp'
Warning: Division by zero
Notice: Use of undefined constant sample2
Warning: Division by zero
Notice: Use of undefined constant uploads - assumed 'uploads'
Warning: Division by zero
Run Code Online (Sandbox Code Playgroud)
...并且file仅包含基本文件名(例如53676a01cdb59.png),但不包含路径组件。您需要使用以下语法:
$file = constant('localhost/samp/sample2/uploads') . uniqid() . '.png';
Run Code Online (Sandbox Code Playgroud)
...或者,更好的是,给常量一个合理的名称:
define('DIR_UPLOADS', 'images/');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |