Я использую многошаговую форму в Vue.js для отправки нескольких файлов на сервер Laravel.Форма дает пользователю возможность добавлять нескольких пользователей в базу данных.Каждый пользователь требует, чтобы файл был загружен вместе с ним.
Файлы изначально сохраняются в состоянии с использованием Vuex.Каждый файл помещается в массив files в store.js
Когда пользователь отправляет форму, массив файлов выглядит следующим образом:
Когда пользователь отправляет форму, я добавляю все отдельные данные формы, включая массив файлов, в новый объект FormData () следующим образом:
let fd = new FormData();
// append each file
for( var i = 0; i < store.state.files.length; i++ ){
let file = store.state.files[i];
fd.append('files[' + i + ']', file);
console.log(file);
}
// append rest of form data
fd.append('appointments', store.state.appointments);
fd.append('business_details', store.state.business_details);
fd.append('business_names', store.state.business_names);
fd.append('directors', store.state.directors);
fd.append('share_amount', store.state.share_amount);
fd.append('shareholders', store.state.shareholders);
Как только все данные формы добавлены, я используюAxios для отправки данных формы в мой бэкэнд Laravel.
axios.post('/businesses', fd, {
headers: {
'content-type': 'multipart/form-data'
}
})
.then(response => {
console.log(response);
this.completeButton = 'Completed';
})
.catch(error => {
console.log(error)
this.completeButton = 'Failed';
})
Внутри моего Laravel BusinessController Затем я хочу Log::debug($_FILES)
, чтобы увидеть, какие файлы были отправлены вместе, но все, что я получаю, этопустой массив.
[2018-10-05 16:18:55] local.DEBUG: array (
)
Я проверил, что отправляемые заголовки включают в себя 'multipart/form-data'
и что я добавляю все свои данные формы в новую FormData (), но я не могу понять, почему серверполучает пустой массив $ _FILES.
ОБНОВЛЕНИЕ 1: Если я Log::debug($request->all());
, я получаю:
Если я пытаюсь сохранитьобъекты в этом файле примерно так:
foreach ($request->input('files') as $file) {
$filename = $file->store('files');
}
Я получаю следующую ошибку:
[2018-10-06 09:20:40] local.ERROR: Call to a member function store() on string