Почему изображение не отправляется на сервер?

Есть некоторая форма заявки, которая собирает следующую информацию от пользователя: фото статьи, название статьи, ссылку на статью. Данные должны собираться и отправляться на сервер с последующей записью в базу данных. Все данные, кроме изображения (ха-ха, кто бы сомневался) отправляются хорошо. Изображение же помещается в указанную папку, но оказывается пустым (открываешь, и написано: "формат данного файла не поддерживается"). Как это исправить?

JS код:
async function getAnswerFromTheServer(event) {
            event.preventDefault();
            let addFile = document.querySelector('input[name="add_file"]').files[0];
            let filmName = document.querySelector('input[name="film_name"]').value;
            let filmLink = document.querySelector('input[name="film_link"]').value;
            let response = await fetch('php/add_films.php', {
                method: 'POST',
                body: JSON.stringify({'add_file': addFile, 'film_name': filmName, 'film_link': filmLink})
            });
            if (response.ok) {
                let text = await response.text();
                console.log(text);
            }
            else {
                console.log('Ошибка: ', + response.status);
                return false;
            }
        }
        document.getElementById('ticsp_form_load_films').addEventListener('submit',getAnswerFromTheServer);


php код:
$data = json_decode(file_get_contents('php://input'));
    $add_file = $data->add_file;
    $path = "images/".uniqid().".jpg";
    file_put_contents($path, $data);
    $film_name = filter_var(trim($data->film_name), FILTER_SANITIZE_STRING);
    $film_link = filter_var(trim($data->film_link), FILTER_SANITIZE_STRING);
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Бородатый программер
Объект File при сериализации в JSON не выдаст Вам содержимое файла. Более того, бинарные данные в чистом виде в JSON вообще сериализовать не получится.
Используйте FormData и отправляйте данные в multipart/form-data формате, на php их можно будет получить из $_POST и $_FILES
Ну и насколько помню, file_put_contents работает со строками в качестве данных, но никак не с объектами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы