#php #mysql #image #image-uploading
#php #mysql #изображение #загрузка изображения
Вопрос:
Здесь я хочу вставить имя пути к изображению и хочу загрузить изображение в папку.
Я декодирую их с помощью изображения 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);
}
Комментарии:
1.
echo $query;
chk вы запрашиваете, где u определил это$table
2. @devpro: я уверен в
$table
и$id
, что я все делаю правильно.3. Разве это не должно быть
file_put_contents($target_file, $im);
вместо$filename
?4. хорошо, чем то, что вы получаете
echo $query;
? пожалуйста, поделитесь5.
SET `profile_pic` '".$target_file."'
должно бытьSET `profile_pic` = '".$target_file."'
. (отсутствует знак равенства).
Ответ №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);
}