我是php和mysql的新手,我试图将用户图像保存到MySql datbase。我已经在 php.net 上看到了这个解决方案
<?php
$data = file_get_contents('path/to/image.jpg');
$data = base64_encode($data);
//after reading data would be like this
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>
它可以工作,但我没有得到如何在MySql数据库中存储"$data"的值。我应该为我的字段采用 varchar 数据类型吗,varchar 的最大限制是多少?
这是正确的方法还是有更好的方法,那么如果是,那么它们是什么?
你可以使用文本。然后,您无需定义最大长度。由于 base64 编码的字符串可能很长,因此它是一个大图像。
另一种解决方案是改为存储图像路径。