Невозможно получить доступ к загруженным файлам из запроса ax ios в laravel - PullRequest
1 голос
/ 01 февраля 2020

Я строю раздел учебной программы для одного проекта, в котором несколько лекций могут содержать несколько файлов. Я не могу отправить файлы на контроллер Laravel.

Vue форма

<input type="file" id="files" name="files[]" ref="resources" multiple @change="onFilesSelect($event, lec_index)">

Метод

onFilesSelect(event, lec_index){
            let files_count = event.target.files.length;
            var files_data = [];
            for(let i = 0;i<files_count;i++){
                files_data[i] = event.target.files[i];
            }
            Vue.set(this.selected_files, lec_index, files_data);
            //this.course_files = this.$refs.resources.files;
        },

Formdata

let formData = new FormData();
            var selected_files_count = this.selected_files.length;
            for(let j=0;j<selected_files_count;j++){
                let resources = this.selected_files[j];
                formData.append('files['+ j +']', resources);
            }

Ax ios почтовый запрос

const id = this.current_course_id;
            const url = `/create-curriculum/${id}`;
            //const url = 'course-uploadfile';
            axios.post(url, formData,{
                headers: {
                    'Content-Type': 'multipart/form-data'
                    }
                })
                .then(response=>{
                    console.log(response);
                })
                .catch(error=>{
                    console.log(error);
                });

Vue инструменты разработчика, показывающие файлы enter image description here

Laravel контроллер

public function create_curriculum(Request $request, $id){
        $data = $request->all();
        print_r($data);
}

Вывод

Array
(
    [files] => Array
        (
            [0] => [object File],[object File]
            [1] => [object File],[object File]
        )

)

Мне не удается просмотреть информацию о файле в [Object File].

1 Ответ

0 голосов
/ 01 февраля 2020

Получено решение после следующих изменений в двух методах.

Добавлено form: new FormData в Vue объект данных.

В файлах выберите

onFilesSelect(event, lec_index){
            let files_count = event.target.files.length;
            var files_data = [];
            for(let i = 0;i<files_count;i++){
                files_data.push(event.target.files[i]);
            }
            Vue.set(this.selected_files, lec_index, files_data);
        },

При загрузке файла

files_store(){
 for(let i = 0; i< this.selected_files.length; i++){
                    for (let j = 0; j < this.selected_files[i].length; j++) {
                        this.form.append('files['+ i +']['+ j +']', this.selected_files[i][j]);
    }
}               
...