Apache Commons Fileupload / Tomcat не может справиться с out.flush()

Кто-нибудь знает обходной путь, при котором, если вы пытаетесь очистить поток вывода сервлета, apache commons fileupload выдает следующее исключение?

FileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly

В основном у меня есть код, который проходит через каждый файл, загруженный с помощью Apache Commons FileUpload, а затем пытаюсь out.flush() немного статистики о каждом файле. то есть:

    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = upload.parseRequest(request);

    for(FileItem field : items) {
        if (!field.isFormField() && field.getName().length()>0 && field.getName().getSize()>0) {
            ArticleImport helper = new ArticleImport(new ArticleImportResponder(user,out));
            // This helper object uses out.flush() to provide feedback to the user.
            helper.process(field.getInputStream(), user);
            }
        }
    }

Проблема не возникает в Apache Tomcat 6.0.20, но она встречается в более ранних версиях.

1 ответ

Решение

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

Вы можете определить, какая версия tomcat запущена, и использовать ее, чтобы определить, можете ли вы использовать out.flush() с помощью следующего вызова:

javax.servlet.ServletContext.getServerInfo();
Другие вопросы по тегам