Dropzone — сервер ответил кодом 0

Ubuntuu — ssh — Symfony3 — Angular-seed — Dropzone

Я работаю над задачей по загрузке файла excel из dropzone в веб-службу, реализованную с помощью symfony3. Когда загрузка завершена, веб-сервис начинает парсить файл, чтобы вернуть успех для события успеха дорпзоны, которая ожидает сигнала от php-части результата парсинга.

Я нахожусь на этапе развертывания и работаю с ssh-сервером моего клиента. Все работает нормально (загрузка, синтаксический анализ, возврат сообщения об успешном завершении), когда я запускаю свой веб-сервис с помощью

php bin/console server:start myserverurl:port

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

после загрузки файла я сразу же получил ошибку дропзоны "Сервер ответил кодом 0.", но файл был получен веб-службой, и процесс успешно завершен, конечно, он попытался вернуть сообщение об успешном завершении в dropzone, но он уже не работает. Я тестировал файлы с такими размерами (2,4 МБ / 8,9 МБ / 14,5 МБ).

Наоборот, с каким-то файлом (207К/50К) все работает хорошо.

Я не могу сделать вывод, связана ли эта проблема с внешним параметром (apache-limit, ...), я не уверен, блокирует ли сервер событие ожидания dropzone из-за ограничения по времени или чего-то еще.

Это моя конфигурация dropzone:

$scope.dropzoneConfig = {
            'options': { // passed into the Dropzone constructor
                'url': $rootScope.baseUrl + 'admin/surveys/updates?access_token=' + $auth.getToken(),
                'maxFiles': 1,
                'uploadMultiple': false,
                'autoProcessQueue': false,
                'maxFileSize': 30
            },
            'eventHandlers': {
                'addedfile': function (file) {
                    if (!$scope.dropzone) {
                        $scope.dropzone = this;
                    }

                    if (!(vm.allowedExt.indexOf(vm.getFileExt(file.name)) > -1 )) {
                        $scope.resetForm();
                        vm.showErrorAlert('L\'extension de votre fichier est invalide , SVP veuilez choisir une extension .xlsx ou .xls');
                        return;
                    }

                    if ($scope.surveyCreate) {
                        if ($scope.surveyCreate.$valid) {
                            vm.enableBtn();
                        } else {
                            vm.disableBtn();
                        }
                    }

                    // survey edit
                    if ($scope.surveyEdit && $scope.selectedSurvey != undefined) {
                        vm.enableBtn();
                    }

                },
                'maxfilesexceeded': function (file) {
                    this.removeAllFiles();
                    this.addFile(file);
                },
                'sending': function (file, xhr, formData) {
                    if ($scope.survey != undefined && $scope.survey.name) {
                        formData.append('name', $scope.survey.name);
                    }

                    if ($scope.selectedSurvey != undefined) {
                        formData.append('survey_id', $scope.selectedSurvey.id);
                    }
                },
                'success': function (file, response) {
                    vm.hideSpinner();
                    $scope.resetForm();
                    if (response.success) {
                        vm.showSuccessAlert();
                        $scope.updateSurveysArray(response.data);
                    } else {
                        vm.showErrorAlert(response.errorMsg);
                    }
                },
                "error": function (file, error, xhr) {
                    vm.hideSpinner();
                    $scope.resetForm();
                    if (error.hasOwnProperty('message'))
                        vm.showErrorAlert(error.message);
                    else
                        vm.showErrorAlert('file transfer error');
                }
            }
        };

Любые идеи ?


person Wajdi Ben Abdallah    schedule 29.03.2017    source источник
comment
Вы когда-нибудь решали эту проблему? У меня тоже случайным образом возникает та же проблема, но почему-то только с IOS-клиентами. Если я попытаюсь прикрепить новый файл непосредственно перед тем, как будет получен ответ от предыдущей загрузки ajax, этот предыдущий запрос выдаст ошибку (даже несмотря на то, что мой сервер обработал запрос очень хорошо). Журнал Apache показывает успешный ответ 200. Однако Nginx показывает 499, что наводит меня на мысль, что клиент IOS (протестированный с Safari и Chrome) просто закрывает соединение, прежде чем получить ответ.   -  person georaldc    schedule 21.11.2018


Ответы (1)


сначала проверьте php.ini и проверьте upload_max_filesize, если он меньше, чем 1000M

добавить прослушиватель событий на кнопку отправки:

submitButton.addEventListener ("щелчок", функция (файл) {

    if (myDropzone.getAcceptedFiles().length > 0) {
        if (submitfiles === true) {
            submitfiles = false;
            return;
        }

        file.preventDefault();
        myDropzone.processQueue();

        myDropzone.on("complete", function () {
            submitfiles = true;
            $('#submit_button').trigger('click');
        });
    } 
});
person Community    schedule 30.03.2017