在这里,我想插入图像路径名称,并希望将图像上传到文件夹中。
我正在使用base64_decode
对图像进行解码,并希望将图像路径插入数据库。我也将图像插入文件夹。
但没有任何事情发生。图像不在文件夹中,也不会将图像路径插入数据库。
我哪里错了?
这是我的代码:
$proflepic = "base64 encoded string";
$p_image = base64_decode($proflepic);
$im = imagecreatefromstring($p_image);
if ($im !== false)
{
header('Content-Type: image/jpeg');
//imagejpeg($im);
//imagedestroy($im);
$target_dir = "img";
$filename = "image_".date('s');
$target_file = $target_dir.'/'.$filename;
if(!is_dir('../'.$target_dir))
{
mkdir('../'.$target_dir);
}
file_put_contents($filename, $im);
$query = "UPDATE ".$table." SET `profile_pic` '".$target_file."' WHERE id='".$id."'";
$result = $db->query($query);
}
答案 0 :(得分:1)
这是我们在评论中讨论的最终结果,以及其他一些调整:
$proflepic = "base64 encoded string";
$p_image = base64_decode($proflepic);
$im = imagecreatefromstring($p_image);
if ($im !== false)
{
header('Content-Type: image/jpeg');
$target_dir = "img";
// Changed to uniqid() instead since date('s') returns seconds,
// which limits you to 60 images (and the risk of overwriting other images
// are great). Also added file extension.
$filename = "image_" . uniqid() . '.jpg';
$target_file = $target_dir . '/' . $filename;
if (!is_dir('../' . $target_dir))
{
mkdir('../' . $target_dir);
}
// $im is a image resource so let's use imagejpeg() instead
imagejpeg($im, $target_file);
imagedestroy($im);
// Added the missing equal sign
$query = "UPDATE ".$table." SET `profile_pic` = '".$target_file."' WHERE id='".$id."'";
$result = $db->query($query);
}