3 回答
TA贡献1906条经验 获得超10个赞
快速浏览PHP手册会得出以下内容:
如果要保存从Javascript canvas.toDataURL()函数派生的数据,则必须将空格转换为加号。如果不这样做,则解码的数据将被破坏:
<?php
$encodedData = str_replace(' ','+',$encodedData);
$decodedData = base64_decode($encodedData);
?>
TA贡献1934条经验 获得超2个赞
您的示例中的数据URI不是有效的PNG图片。这将永远无法工作,并且与代码无关,与数据无关。
不适用,但可能会引起关注:
file_put_contents($_POST['logoFilename'], file_get_contents($data));
背后的想法:PHP本身可以读取数据URI(data://)的内容,因此您不需要自己对其进行解码。
请注意,正式数据URI方案(参考:“ data” URL方案RFC 2397)//在冒号(“ :”)之后不包含双斜杠(“ ”)。PHP支持带或不带两个斜杠。
# RFC 2397 conform
$binary = file_get_contents($uri);
# with two slashes
$uriPhp = 'data://' . substr($uri, 5);
$binary = file_get_contents($uriPhp);
TA贡献1803条经验 获得超6个赞
所有有效的代码:
$imgData = str_replace(' ','+',$_POST['image']);
$imgData = substr($imgData,strpos($imgData,",")+1);
$imgData = base64_decode($imgData);
// Path where the image is going to be saved
$filePath = $_SERVER['DOCUMENT_ROOT']. '/ima/temp2.png';
// Write $imgData into the image file
$file = fopen($filePath, 'w');
fwrite($file, $imgData);
fclose($file);
- 3 回答
- 0 关注
- 490 浏览
添加回答
举报