Почему я получил сообщение «FileUploadException: поток неожиданно завершился» с помощью Apache Commons FileUpload? - PullRequest
12 голосов
/ 14 марта 2009

В чем причина возникновения этого исключения:

org.apache.commons.fileupload.FileUploadException: 
  Processing of multipart/form-data request failed. Stream ended unexpectedly

Ответы [ 3 ]

12 голосов
/ 14 марта 2009

Основная причина в том, что базовый сокет был закрыт или сброшен. Наиболее распространенная причина заключается в том, что пользователь закрыл браузер до того, как файл был полностью загружен. Или Интернет был прерван во время загрузки. В любом случае код на стороне сервера должен уметь корректно обрабатывать это исключение.

3 голосов
/ 14 марта 2009

Прошло около года с тех пор, как я имел дело с этой библиотекой, но если я правильно помню, если кто-то пытается загрузить файл, затем меняет URL-адрес браузера (нажимает на ссылку, открывает закладку и т. Д.), Тогда вы можете получить это исключение.

2 голосов
/ 18 ноября 2016

Возможно, вы получите это исключение, если используете FileUpload для получения загрузки из флэш-памяти.

По крайней мере, начиная с версии 8, Flash содержит известную ошибку: многочастный поток, который он создает, нарушен, потому что конечная граница не содержит суффикса "-", который должен указывать, что больше нет элементов , Следовательно, FileUpload ожидает следующий элемент (который он не получает) и выдает исключение.

Существует обходной путь, который предлагает использовать потоковый API и перехватить исключение.

catch (MalformedStreamException e) {
    // Ignore this
}

Для получения более подробной информации, пожалуйста, обратитесь к https://commons.apache.org/proper/commons-fileupload/faq.html#missing-boundary-terminator

...