Загрузка картинки в базу данных

"gsrc" : $('#gsrc').val() в этой строчке не присваивается картинка, как сделать так что бы в php файл передавалась картинка

В базе выводит uploads/1619374533

$.post(
      "core.php",
       {
          "action" : "newGoods",
          "id" : 0,
          "gname" : $('#gname').val(),
          "gsrc" : $('#gsrc').val(),
          "gprice" : $('#gprice').val()
       },
            function (data) {
                if (data === 1) {
                    alert('Запись добавлена');
                    init();
                } else {
                    alert("Данные введены не правильно2");
                }
            }
 //Добавляю новый товар в базу данных
    $conn = connect();

    $name = $_POST['gname'];
    $price = $_POST['gprice'];

    $path = 'uploads/' . time() . $_FILES['gsrc']['name'];
    if (!move_uploaded_file($_FILES['gsrc']['tmp_name'], '../' . $path)) {
        $response = [
            "status" => false,
            "type" => 2,
            "message" => "Ошибка при загрузке фото",
            ];
            echo json_encode($response);
        }

    $sql = "INSERT INTO items (id, name, src, price) VALUES (NULL, '$name', '$path', '$price')";

    if ($conn->query($sql)) {
        echo "1";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    mysqli_close($conn);
    writeJSON();

Ответы (1 шт):

Автор решения: NaClnik

Я предполагаю, что тэг с id #gsrc выглядит примерно так: <input type="file" name="gsrc" id="gsrc">. Когда пользователь выбирает нужный ему файл, в значение value присваивается псевдо-путь до файла (это сделано в целях безопасности, чтобы злоумышленник не узнал, каким образом хранятся файлы на вашем ПК). Следовательно, после того, как пользователь выбрал нужный ему файл, input выглядит примерно вот так: <input type="file" name="gsrc" id="gsrc" value="uploads/1619374533">. Следовательно, когда вы используете это выражение: $('#gsrc').val(), вы и достаёте value, которое содержит в себе эту строку: uploads/1619374533. Чтобы отправить картинку на сервер, вам нужно будет использовать класс FormData, который поддерживается всеми современными браузерами. Пример, как отправлять файл вы можете посмотреть по этой ссылке: https://snipp.ru/jquery/uploads-files-ajax-jquery

Также не забудьте добавить в ваш тэг <form> атрибут enctype="multipart/form-data". Если вы не укажете этот атрибут в вашей форме, вы не сможете отправить файл.

Если задаёте вопрос, то пожалуйста, приложите весь код, который относится к заданному вопросу, иначе, человек, который хочет помочь вам будет гадать, что же у вас написано.

→ Ссылка