【问题标题】:canvas toDataUrl() how to get base64 result into and out a msql blob fieldcanvas toDataUrl()如何将base64结果输入和输出msql blob字段
【发布时间】:2012-09-21 17:34:40
【问题描述】:

我想将画布图像存储到一个 blob 字段中。

在服务器端,我收到来自toDataUrl() 的base64 编码字符串

  • 我必须做些什么才能将它放入 blob 字段中?

  • 以及如何在img标签中再次显示?

我需要使用什么代码? mysql page不是很清楚,我用的是PDOprepared statements。

【问题讨论】:

  • @hakre 不完全是,因为 OP 是关于数据 URI 的解码
  • @AlvinWong:我不太确定,因为在理查德的previous question那个问题应该已经解决了。
  • 我在那篇文章中的所有内容都在工作,这是真的,但我对 blob 一无所知。我读过的所有帖子都模糊不清如何处理 base64。
  • 为什么会有人投票赞成关闭,这很烦人,只是提供一些有用的信息

标签: php mysql pdo blob html5-canvas


【解决方案1】:

如果您真的需要将其存储在 blob 数据中,可以这样做:

对于 PHP >=5.2.0,您可以使用 data:// 流包装器从数据 uri 中检索文件:

$file_in_blob = file_get_contents("data://".$var_containing_the_data_uri);

其中$var_containing_the_data_uri 应替换为包含数据URI 的变量,例如$_POST['image']。然后您可以将$file_in_blob 插入到数据库中。

当您需要再次在网页中显示时,您可以:

  1. 编写一个 PHP 脚本,根据 GET 参数检索 blob 内容,并将其用作图像标签的src,或
  2. 直接使用从toDataUrl()获取的原始数据URI作为图片标签的src

如果你使用方法2,你实际上不需要将数据URI解码成blob,而是直接存储数据URI。 (当然你可能会关心数据大小......)


方法一示例:

您的 HTML:

<img src="img_from_db.php?img=1" />

你的img_from_db.php

<?php
header('Content-Type: image/png'); // make the browser recognize it as PNG
echo get_image_blob_from_db($_GET['img']); // you may wish to add some checks

方法二示例:

<img src="<?=get_image_dataURI()?>" />

【讨论】:

  • 在您的示例中是否不必从第一部分中删除 $_post['image'](图像信息与 toDataUrl 一起发送?
  • 是流包装器,它只是另一种创建文件的方式,就像 fopen 和 fwrite 一样。如果是这样,那么我了解它是如何工作的。我必须将 loadFile 用于 blobfield 还是像任何其他字段一样使用它?
  • 我已停止尝试将其存储在数据库中。由于某种原因它无法正常工作。此外,将它存储在文件系统中更简单,因为它涉及的编码更少。如果有人投票删除此帖子,我将删除它!
猜你喜欢
  • 2020-02-23
  • 2014-10-21
  • 1970-01-01
  • 2018-12-09
  • 2019-11-23
  • 1970-01-01
  • 2020-10-03
  • 2018-06-11
  • 1970-01-01
相关资源
最近更新 更多