Base64解码混合结果


base64 decode mixed results

我在PHP中有以下代码,它可以正常工作,很好。我正在从移动设备发送图像到此脚本,该脚本将其解码为img文件并在服务器上创建一个文件。我99.9%肯定每次都是base64编码的。

<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: image/jpeg');
$data = ($_POST['imageData']);
define('UPLOAD_DIR', 'images/');
$img = str_replace('data:image/jpeg;base64,', '', $data);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.jpg';
file_put_contents($file, $data);
echo ('{"imgUrl" : "' . $file . '"}');
?>

然后返回要添加到数据库中的图像URL。

问题是,大多数时候它会解码成。jpg文件,其他时候会解码成txt文件。我不明白它为什么会这样,因为它有点随机。但我注意到,有时它会以$_POST的形式出现,而其他时候,$_POST是Null。所以我考虑使用:

$data = json_decode(file_get_contents('php://input'));

但是,这似乎又不一致。但是我放了一个逻辑语句,如:

$data = ($_POST['imageData']);
if($data == NULL) {
    $data = json_decode(file_get_contents('php://input'));
}

我应该知道为什么代码工作,有时不工作的原因吗?

我知道这个问题很老了,但却是第一次通过看这个话题出现的。因此,每个看到这个问题的人都可以立即找到正确答案的链接。

你应该检查这个PHP -得到base64 img字符串解码并保存为jpg(结果空图像)

还要检查你正在使用的条件,因为

if ($data === NULL)

可能不同
if ($data == NULL)

另外,您错误地将base64字符串保存到图像文件中。点击链接,告诉我是否有帮助。