У меня есть простой формы с загрузкой файла и ввода текста, как показано ниже:Не удается передать файл в контроллер Laravel с VueJS
<form v-on:submit.prevent="createStatus" method="post" enctype="multipart/form-data">
<div class="Image-input__input-wrapper">
<input @change="previewThumbnail" class="Image-input__input" name="thumbnail" type="file">
</div>
<div v-bind:class="{'form-group': true, 'has-error': errors.description}">
<label>Status Description:</label>
<input type="text" class="form-control" v-model="newStatus.description">
<span class="help-block" v-for="error in errors.description">{{ error }}</span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Save New Status</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
</div>
</form>
При выборе файла изображения предварительного просмотра с помощью метода previewThumbnail.
previewThumbnail: function(event) {
var input = event.target;
if (input.files && input.files[0]) {
var reader = new FileReader();
var vm = this;
reader.onload = function(e) {
vm.imageSrc = e.target.result;
}
reader.readAsDataURL(input.files[0]);
}
console.log(input.files[0]);
this.newStatus.image = input.files[0];
console.log(this.newStatus.image);
},
В консоли я получаю данные файла. Затем мне нужно передать эти данные для отправки в контроллер laravel, но данные файла не попадают в функцию отправки. Метод createStatus, приведенный ниже, вызывается в форме submit, при возврате ответа newStatus.image, который был передан URL, пуст.
createStatus(){
var formData = new FormData();
formData.append('image', this.newStatus.image);
formData.append('description', this.newStatus.description);
axios.post('/api/statuses', formData).then(response => {
console.log(response.data);
}, response => {
this.formErrors = response.data;
});
},
Я пропустил что-то в функции отправки?
Это решило его, спасибо за вашу помощь! Не могу поверить, что я пропустил это. – mims
@Dan Gamble, Кажется, вы можете мне помочь. Если у вас есть свободное время, вы можете посмотреть здесь: https://stackoverflow.com/questions/44174007/how-can-i-pass-input-file-with-vue-js-2?noredirect1_comment75368949_44174007 –