我有一个base64文本,这个文本非常庞大,是从Ajax发布的。在控制台中,我可以看到代码,如果我将其复制并粘贴到base64图像转换器中,它可以正常工作。
在PHP $_POST
中始终为空,但php://input
显示所有信息,这是一个JSON,在数组中有四个部分。在'imgData'部分下,图像二进制代码完整且有效,但如果我这样做:
$data = json_decode(file_get_contents('php://input'));
(A) print_r($data); // Shows all the image data under [imgData]
(B) print_r($data->imgData); // Only shows a small part of the image data
以下是输出(A)的示例:
stdClass Object ( [switch] => addImage [table] => tbl_images [propid] => [imgData] => data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAAHGlET1QAAAACAAAAAAAAAH0AAAAoAAAA
这是exmaple输出(B):
data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAAHGlET1QAAAACAA
但(B)只是数据的一部分?有什么理由吗?
更新
$data = json_decode(file_get_contents('php://input'));
(A) var_dump($data);
(B) var_dump($data->imgData);
以上内容现在相同,并提供相同的字符串大小。
当我把它放入SQL查询时:
$detail = "Property_Id, Image_Data ) VALUES ( 213, " . $data->imgData;
$sql = "INSERT INTO " . $table . " ( " . $detail . " )";
echo $sql;
$addQ = $mysqli->query($sql);
echo 'image added';
print_r($mysqli->error);
} else {
echo "No params added";
}
它仍然没有显示$ sql字符串的结尾?