Laravel vue сохранение файла на сервере

134
09 июля 2019, 14:30

Возникла проблема при сохранение файла на сервере. Есть vue компонент:

<form @submit.prevent="addNews" enctype="multipart/form-data">
    <input ref="image" type="file" @change="processFile">
    ...
</form>
methods: {
    processFile(event) {
        this.img = event.target.files[0];
        console.log(this.img); // В консоли картинка распознаётся со всеми параметрами как надо
    },
    addNews() {
        axios.post('/news/create', {
            title: this.title,
            img: this.img, // Здесь уходит пустой массив? O_o (подсмотрел в консоли)
            description: this.description,
            article: this.article,
        })
            .then((response) => {
                console.log(response);
            })
    }

Всё приходит на сервер кроме картинки (приходит пустой массив вместо него). В чем может быть проблема?

Увидел что используют такую конструкцию:

let form = new FormData();
form.append('img', this.img);

Стоит ли переделывать всё под эту конструкцию? (проверил - работает)

let form = new FormData();
form.append('title', this.title);
form.append('description', this.description);
form.append('article', this.article);
form.append('img', this.img);
axios.post('/news/create', form)

Или же есть более простой способ в решении моей проблемы?

Зачем создавать новую форму и передавать параметры из старой формы? Возможно необходимы дополнительные параметры для формы?

Answer 1

При создании объекта FormData, передайте в качестве аргумента объект существующей формы.

let form = new FormData(this);
axios.post('/news/create', form);
READ ALSO
русский язык и mysql

русский язык и mysql

Наверное, я буду уже миллиардным человеком, который спросит как сделать так, чтобы mysql начал понимать русский языкЯ перепробовал все доступные...

241
Уровни иерархии БД [закрыт]

Уровни иерархии БД [закрыт]

Тут 5 уровней БД

174
Header при поднятии наверх оставляет полосу бэкграунда, как исправить?

Header при поднятии наверх оставляет полосу бэкграунда, как исправить?

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

175