Добавленные файлы к FormData не получены на сервере Laravel - PullRequest
0 голосов
/ 05 апреля 2019

У меня странная проблема ... У меня есть форма с несколькими полями ... при отправке формы я добавляю несколько файлов изображений для данных формы и отправляю их так:

            $('#newEntry').on('submit', function(e){
                e.preventDefault();
                const formData = new FormData(e.target);

                formData.delete('images[]');

                for (var i = 0; i < filesToUpload.length; i++) {
                    formData.append('images[]', filesToUpload[i].file, filesToUpload[i].file.name);
                }
                $(this)[0].submit();
            });

и когда я пытаюсь echo(count($request->images)) на сервере Laravel, он выводит 0 .. и на dd($request) .. я вижу пустой массив файлов

, но когда я отправляю ту же форму с теми же файлами непосредственно из inputполе вместо добавления данных к нему следующим образом:

<input type="file" name="images[]">

Я получаю все файлы на сервере.

Файлы успешно добавлены к formData .. Я проверил это с помощью:

                var formKeys    = formData.keys();
                var formEntries = formData.entries();

                do {
                  console.log(formEntries.next().value);
                } while (!formKeys.next().done)

Я также пытался посылать те же добавленные файлы через AJAX, и он работал отлично:

             $('#newEntry').on('submit', function(e){
                e.preventDefault();
                const formData = new FormData(e.target);

                formData.delete('images[]');

                for (var i = 0; i < filesToUpload.length; i++) {
                    formData.append('images[]', filesToUpload[i].file, filesToUpload[i].file.name);
                }

                $.ajax({
                    url: actionURL,
                    data: formData,
                    processData: false,
                    contentType: false,
                    type: "POST",
                    success: function (data) {
                        alert("DONE");
                    },
                    error: function (data) {
                        alert("ERROR - " + data.responseText);
                    }
                });
             });

при копании глубже ... Я обнаружил, что когда яотправить форму через Http запрос. Ошибка с кодом 500 В консоли на мгновение появляется внутренняя ошибка сервера (незадолго до перезагрузки страницы)

перепробовал все, но не знаю, в чем причина этого странного поведения.разберись

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете проверить вкладку network вашего браузера (предпочтительно Chrome), чтобы сравнить параметры запроса, которые вы отправляете на сервер.

Если запрос слишком быстрый, и вы не можете его перехватить, попробуйте поместить debugger; (или нажмите перед строкой кода на вкладке источника) в свой код Javascript, чтобы остановить выполнение кода. прямо перед перезагрузкой. Затем вы можете проверить текущее состояние вашего Javascript, а также ответ 500, который вы получили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...