Возникла проблема при сохранение файла на сервере. Есть 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)
Или же есть более простой способ в решении моей проблемы?
Зачем создавать новую форму и передавать параметры из старой формы? Возможно необходимы дополнительные параметры для формы?
При создании объекта FormData, передайте в качестве аргумента объект существующей формы.
let form = new FormData(this);
axios.post('/news/create', form);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Наверное, я буду уже миллиардным человеком, который спросит как сделать так, чтобы mysql начал понимать русский языкЯ перепробовал все доступные...
Если спуститься вниз и затем вернуться на самый верх, то есть момент перехода между меню и заглавной картинкой