Путь к файлу изображения не вставляется в базу данных

#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);
}