【发布时间】:2018-05-23 10:57:20
【问题描述】:
我正在尝试使用 PHP 发布调用在我的 MariaDB 中写入 BLOB。这个 BLOB 来自于从画布中获取 BASE64:
var data= $('#signatureDiv').signature('toDataURL');
var base64data= data.replace(/^data:image\/(png|jpg);base64,/, "");
$.post("myFunc.php", {imgContents: base64data}, function(data) {});
现在,在 myFunc.php 中:
$imgContents = $_POST['imgContents'];
$decodedPNG = base64_decode($imgContents);
$defTest = "UPDATE recogidas SET FirmaProv = ':blobFirma' WHERE ID=$index";
$preparedpdo = $mypdoObject->prepare($defTest);
$preparedpdo->bindParam(':blobFirma', $decodedPNG, PDO::PARAM_LOB);
$preparedpdo->execute();
echo $decodedPNG;
我对 PNG 进行解码以将其保存为 BLOB。然后我准备一个 SQL 更新来将此 BLOB 上传到适当的 MEDIUMBLOB 列。但是,数据总是被截断为几个字节!!正是这些字节:
3A626C6F624669726D61
当它作为 PNG 格式时,需要大约 100Kb。我尝试在 PHP 开始时使用它:
ini_set("odbc.defaultlrl", "1000K");
但它没有效果。为了确保解码正确,我尝试回显解码后的 BLOB,如果正确则返回。
为什么我的数据库将数据截断为一组字节?
额外信息:不管我在画布上画的图片如何,上传到数据库的数据总是那些相同的字符。
【问题讨论】:
标签: php blob mariadb truncation