将画布数据保存到服务器并仅检索一块?

时间:2013-03-06 18:07:52

标签: php mysql html5-canvas

我正在制作一件艺术作品,我一直在寻找并通过互联网寻求帮助,而且确实有很多,但我真的不明白。

大约一个月前,我投入了html和CSS,并且在这篇文章中被迫学习了大约2周的Javascript片段...我现在知道我需要PHP,这是我遇到的问题最多的地方。这是问题所在。

我有一个用户可以涂鸦的html5画布。我喜欢的是他/她能够按下按钮并将他/她的图像发送到服务器(我假设使用PHP)并保留图像直到另一个人打开涂鸦网页。我希望它成为一个集体的艺术作品:某人画出一些东西,提交它,其他人进入页面,另一个人的“艺术”的片段已经存在。理想情况下,这将是随机的,但目前我很乐意将图像发送到服务器,并在下次打开时将一个部件放回页面。

我知道我必须使用带隐藏字段的表单吗?这是我发现的,但说实话,我不知道这意味着什么以及如何做到这一点。我找到了这段代码:

<form action="Drawing.html" method="post">
<input type="hidden" id="formImageFileName" name="imageFileName">
<input type="hidden" id="sketch" name="imageData" value="" />
<input type="submit" class="btn btn-primary" id="saveImageButton" value="Save Image..." />
</form>

<script language="javascript" type="text/javascript">
document.getElementById('my_hidden').value = canvas.toDataURL('image/png');
document.forms["form1"].submit();
</script>
<?php 
$link = mysql_connect('localhost', 'root', 'root');
$upload_dir = somehow_get_upload_dir();
$img = $_POST['my_hidden'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = $upload_dir."image_name.png";
$success = file_put_contents($file, $data);
header('Location: '.$_POST['return_url']);
?>

单击该按钮时,图像消失。我不知道它是否会去任何地方,或者它是否被彻底消灭了? 我试图单独做,但我已经决定需要帮助。我是PHP的新手,就像最重要的新手一样。我不知道这有什么用,如果有人以简单的方式向我解释以及如何继续,我会非常感激。我做了一些阅读,我知道为什么有$和POST是什么,我读了mysql,但我不知道如何访问服务器或检索数据或任何东西。

拜托,我在绳子尽头。提前感谢任何感到慷慨的人。

PS:请不要讽刺评论,如果我遗漏了任何东西请告诉我。我已经因为不知道如何做到这一点而感到难过,并且宁愿不要感到更糟,因为我忘了包含一些东西。请不要评论有多少地方可以找到我要找的东西,如果我来这里,那是因为我需要认真的帮助,而且这些地方并没有因为我的时间限制而削减它。

再次感谢!

2 个答案:

答案 0 :(得分:0)

当您按提交时,您的客户端(浏览器)会将图像上传到服务器,现在预计会立即加载页面。您必须从服务器重新发送包含画布及其内容的页面。

答案 1 :(得分:0)

您要求的是巨大的数量的知识,不仅包括编码,还包括配置PHP服务器和MySQL服务器。这里的信息可能太多了。

这是非常概括的列表,列出了您必须实现的目标:

  • 配置PHP服务器的php.ini以允许上传。
  • 配置MySQL和PHP协同工作。
  • 创建一个MySQL数据库和表来存储您的图像。
  • 创建.php文件以允许用户上传文件或使用XMLHttpRequest()为他们上传文件。
  • 添加提交POST或FILE的脚本,并将图像放入数据库。
  • 创建.php文件以允许用户从数据库中“签出”文件。
  • 添加从数据库中选择正确图像的脚本,并将其下载到用户。
  • 如果允许多个用户同时签出同一文件,则处理MySQL上的并发问题。

我读到你是html,webservers&amp;的新手。数据库所以我希望此列表对您来说具有挑战性。所以这是我的建议:注册Lynda.com免费试用会员资格。他们有非常好的网络研讨会处理网络主题。我不是Lynda.com的附属机构(这里没有销售推销!),但我发现他们的研讨会是一个很好的学习工具。

特别是,请阅读教程中的这些章节“PHP with MySQL Beyond the Basics”:

  • 照片库项目设置
  • 上传文件
  • 照片类

祝你好运并继续编码......坚持不懈地学习,你的作品将融合在一起!