我正在努力将画布转换为图片,并在用户提交表单时将其上传到服务器。 图像正确发布但在服务器中显示为空。
这是我的代码,(我正在使用phonegap)
.drawImage ()
位于main.js ..但canvas..toDataURL
位于html的脚本中
<script>
function insert()
{
var img = document.getElementById("myCanvas")[0].toDataURL("image/jpeg");
$.ajax({
type: "POST",
url: "http://*******************/create.php?title="+ ($("#myTitle").val())+"&description="
+$("#myDesc").val()+"&price="+$("#myPrice").val(),
data: {img: img},
success: function(data)
{
alert("inserted");
}});
</script>
PHP
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
有什么想法吗?
编辑!!!
最后是上传!!!
感谢Jack Franzen的建议。 我已将PHP代码更改为
$img = $_POST['img'];
$img = str_replace('data:image/jpeg;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = uniqid() . '.jpg';
$success = file_put_contents($file, $data);
它正如魅力一样! :)
答案 0 :(得分:1)
我知道你的问题!您的PHP代码正在寻找&#34; PNG&#34;,但您的javascript正在生成&#34; JPG&#34;
只需切换到DataURL(&#34; image / jpeg&#34;)to toDataURL()