javascript - 通过 Ajax 在 PHP 中保存来自 Javascript 的数据 URL

标签 javascript php ajax session data-url

对于我的项目,我需要将 Canvas 上显示的内容保存到数据库中。我现在非常熟悉 toDataURL() 函数,下面的代码(本质上只是一个测试)可以工作,显示图像两次。

var canvas = document.getElementById('canvas');
var image = new Image();
image.src = "03Jun15.jpg";
canvas.width = image.naturalWidth;
canvas.height = image.naturalHeight;
canvas.getContext("2d").drawImage(image, 0, 0);

var newcanvas = document.getElementById('newcanvas');
var img = new Image();
img.src = canvas.toDataURL("image/png");
var imageData = canvas.toDataURL("image/png");
newcanvas.width = img.naturalWidth;
newcanvas.height = img.naturalHeight;
newcanvas.getContext("2d").drawImage(img, 0, 0);

但是,当我尝试通过 Ajax 将 source 保存到 session 变量时,问题就出现了。下面的代码紧接在上面的代码之后,并且在 testcanvas Canvas 上不显示任何内容。我想要发生的是将 $_SESSION['imageData'] 设置为数据 URL,然后图像将再次显示,但这次使用 session 变量作为源。我从 session 变量中得到的是一个长字符串,它与原始的 source 变量非常相似,但显然与它不匹配(我已经做了一个快速的 if 语句来确认这一点)。

$.ajax({
    url:"upload_image.php",
    method:"POST",
    data:{imageData:imageData}
});

var testcanvas = document.getElementById('testcanvas');
var newimage = new Image();
newimage.src = "<?php echo $_SESSION['imageData']; ?>";
var newsource = "<?php echo $_SESSION['imageData']; ?>";
testcanvas.width = newimage.naturalWidth;
testcanvas.height = newimage.naturalHeight;
testcanvas.getContext("2d").drawImage(newimage, 0, 0);

这是在 upload_image.php 上找到的内容:

session_start();

$_SESSION['imageData'] = $_POST['imageData'];

老实说,我不知道翻译中丢失了什么,有人可以帮忙吗?

最佳答案

为您找到了这个: https://gist.github.com/peterschmidler/2410299

The following code saves a canvas as png with ajax to php.

Javascript:

var canvasData = canvasElement.toDataURL("image/png");
$.ajax({
    url:'save.php', 
    type:'POST', 
    data:{
        data:canvasData
    }
});

PHP:

$data = $_POST['data'];
$data = substr($data,strpos($data,",")+1);
$data = base64_decode($data);
$file = 'output.png';
file_put_contents($file, $data);
echo "Success!";

关于javascript - 通过 Ajax 在 PHP 中保存来自 Javascript 的数据 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48063558/

相关文章:

php - 我需要这个 jquery/ajax 脚本每 30 秒运行一次

javascript - jquery ajax无法解析有效的json

javascript - jquery将第n次出现的字符分割为两个子字符串

javascript - 如何使用 API 从多个 IMDB id 获取电影信息?

javascript - 如何使用 header 和数据创建对服务器的 javascript POST 请求

javascript - 为什么不$(element).ready?

php - 单个语句中的多个 COUNT 和 GROUP BY

php - 无法删除数据库。删除数据库查询不起作用

javascript - 在jqgrid中调用自定义格式化程序不起作用

php - 使用brew更新El Capitan php版本