422 Ошибка Необработанной Сущности. Я попытался загрузить файл Excel для импорта данных, но он не работает

#laravel #vue.js #validation #vuejs2 #laravel-8

#ларавель #vue.js #утверждение #vuejs2 #ларавель-8

Вопрос:

Это мой код, я использую vuejs и laravel. Функция, которую я выполняю, заключается как в сохранении курса, так и в импорте файла Excel для получения данных в файле. Но при сохранении курса все нормально, но когда дело доходит до запуска строки файла validate excel, ошибка не появляется. Даже несмотря на то, что я дал ему имя и консоль.вышел лог. Вы можете помочь мне это исправить? Огромное спасибо.

Компонент — тег шаблона

 lt;form @submit.prevent="store()" @keydown="form.onKeydown($event)"gt;  lt;div class="form-group"gt;  lt;label class="form-label"gt;Courseslt;/labelgt;  lt;select class="form-control" name="education_program_course" v-model="form.education_program_course"gt;  lt;option value="" disabled selected=""gt;Select optionlt;/optiongt;  lt;option value="" disabledgt;-------lt;/optiongt;  lt;option v-for="course in courses" :key="course.course_code" :value="course.course_code"gt;{{ course.course_name }}lt;/optiongt;  lt;/selectgt;  lt;/divgt;   lt;div class="form-group"gt;  lt;label class="form-label"gt;Excel Filelt;/labelgt;  lt;input type="file" class="form-control" id="file_data" name="file_data" ref="fileupload" @change="onFileChange"gt;  lt;/divgt;   lt;div class="card-footer text-right"gt;  lt;button :disabled="form.busy" class="btn btn-success btn-lg mt-1" type="submit"gt;Savelt;/buttongt;  lt;/divgt; lt;/formgt;  

Компонент — тег скрипта

 export default: {  data() {  return {  file_data: "",  form: new Form({  education_program_course  }),  },  methods: {  onFileChange(e) {  this.file_data = e.target.files[0];  },   store() {   this.form.busy = true;  let formData = new FormData();  formData.append('file_data', this.file_data);  this.form.post('../../api/admin/program/education', formData, {  headers: { 'content-type': 'multipart/form-data' }  })  .then(res =gt; {  if(this.form.successful){  this.$snotify.success('Sucessful!');  this.form.clear();  this.form.reset();  }  })  .catch(err =gt; {  this.$snotify.error(err.response.data.errors.file_data[0]);  });  },  }  } }  

Контроллер

 $data = $request-gt;validate([  'education_program_course' =gt; ['required'],  'file_data' =gt; ['required', 'file', 'mimes:xls,xlsx'] ]); $program = new EducationProgram(); $program-gt;education_program_course = $data['education_program_course']; $path = $request-gt;file($data['file_data'])-gt;getRealPath(); Excel::import(new ProgramDetailImport, $path);  

Комментарии:

1. @guyg я просто отправляю данные file_data в FormData, потому что курс education_program_course уже доступен в этой форме.

Ответ №1:

Вы должны добавить «образование_программ_курс» в свои данные формы.

 formData.append('education_program_course', this.form.education_program_course);  

Комментарии:

1. я думаю, что курс education_program_course уже доступен в этой форме.

2. проверьте ошибку проверки с помощью сетевой консоли браузера

3. Я проверил, и там написано, что требуется ошибка проверки. Но когда я проверяю console.log(this.file_data) , он все равно показывает данные этого файла.

Ответ №2:

Я решил эту проблему. Изменить изменение в теге скрипта -gt; store()

От:

 let formData = new FormData(); formData.append('file_data', this.file_data);  

Для:

 if(document.getElementById("file_data").files[0]){  this.form.file_data = document.getElementById("file_data").files[0]; }  

Добавление file_date form: new Form и удаление formData this.form.post .

Комментарии:

1. Можете ли вы уточнить свое объяснение? Что вы подразумеваете под «Изменить изменение в теге сценария -gt; магазин()`? Похоже, это не отражено в вашем фактическом предложении. Я неправильно понял? Если так, то и другие тоже могли бы.