Почему мое сообщение об ошибке при загрузке принимается только Edge? - PullRequest
0 голосов
/ 28 мая 2018

Я использую MultipartConfig для обработки загрузки файла с помощью сервлета и отправки сообщения об ошибке, если файл слишком велик:

       private void doUpload(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
            response.setContentType("text/plain");
            response.setCharacterEncoding("UTF-8");

            Part filePart;
            try {
                filePart = request.getPart("file");
            } catch (IllegalStateException e) {
                System.out.println("File To Large");
                response.setStatus(HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE);
                PrintWriter writer = response.getWriter();
                writer.println("failure:filetobig");
                writer.flush();
                writer.close();
                return;
            }
         ... (file handling) ...
        }

Если я использую сервлет с Jquery-File-Upload (на основе Ajax) иразмер файла превышает maxFileSize, Edge возвращает правильное сообщение об ошибке с кодом состояния 413 и состоянием готовности 4. Если я делаю то же самое с Firefox или Chrome, я получаю код состояния 0, состояние готовности0 и вкладка сети в dev-tools показывает, что ответ не получен. image

В Firefox битрейт переключается с отрицательного на положительный, и через некоторое время Chrome возвращает NaN.Независимо от того, какой браузер я использую, System.out.println("File To Large"); выполняется.Если я выполняю запрос на загрузку с помощью cURL, возвращается правильное сообщение об ошибке.

Мой MultipartConfig для проверки этого:

@MultipartConfig(maxFileSize = 1024 * 1024 * 30, // 30 MB
        maxRequestSize = 1024 * 1024 * 1000 // 1000 MB
)

1 Ответ

0 голосов
/ 29 мая 2018

Я понял: сервер сбросил соединение, потому что для maxSwallowSize задано слишком низкое значение.

См .: https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

Как ни странно, Edge не заботится об этом и отображает правильное сообщение !?

...