Что «ест» мой uploadFile до того, как мой сервлет POST сможет его обработать?

Я использую igUpload Infragistics IgniteUI на своей веб-странице для загрузки файлов на наш сервер Apache Tomcat, и пока файлы загружаются, я не могу получить к ним доступ в своем коде сервлета. Может быть, кто-то здесь имеет представление о том, что происходит.

Когда igUpload отправляет файл через Ajax, я вижу красиво сформированный POST-запрос с заголовками:

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length  24804
Content-Type    multipart/form-data;  boundary=---------------------------91823184012919
Cookie  JSESSIONID=BB4D29EEA9C703CA529EA48E74413A72
Host    localhost:8080
Referer http://localhost:8080/MyApp.html
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0

и пользовательский файл в разделе «Post» с таким «заголовком»:

-----------------------------91823184012919 Content-Disposition: form-data;
 name="uploadDoc_0__frm_if"; filename="UsersFile.xls" Content-Type: application/vnd.ms-excel

Мой сервлет затем вызывается, но когда я использую это (фрагмент кода из FileUpload doc):

                DiskFileItemFactory factory = new DiskFileItemFactory();
                // Configure a repository (to ensure a secure temp location is used)
                ServletContext servletContext = this.getServletConfig().getServletContext();
                File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");                   
                factory.setRepository(repository);                                       
                // Create a new file upload handler                   
                ServletFileUpload upload = new ServletFileUpload(factory);                                       
                // Parse the request                   
                List<FileItem> items = upload.parseRequest(request);

Список товаров ВСЕГДА пуст. Тем не менее, в отладке Eclipse я могу ВИДЕТЬ глубоко в объекте Request DiskFileItem, который указывает на файл пользователей, который был сохранен во временном каталоге. Из этого постаЗагрузка файла с помощью parseRequest от ServletFileUpload? похоже, что struts2 забирает файл, прежде чем мой сервлет получит шанс. Поэтому я посмотрел в Struts2 FileUploadInterceptor и не нашел много. Я переписал его своим собственным перехватчиком, и он никогда не вызывался. Я получил источник FileUpload, чтобы я мог установить точки останова, и он никогда не вызывается во время этого процесса fileUpload. Первый код, который я вижу, выполняется, это мой сервлет, и к этому моменту файл уже обработан.

Итак, ЧТО на самом деле ест / загружает / хранит мой файл, и как мне остановить его или работать с ним, чтобы я мог фактически использовать загруженный файл?

Спасибо за понимание.

================================ РЕДАКТИРОВАТЬ ================= =================

Я добавил константу struts.xml из ответа @Andrea Ligios ниже для моего сервлета, и это не сработало. Затем я проверил файл web.xml, и он имел эти строки фильтра, кроме

org.apache.struts2.dispatcher.FilterDispatcher

Однако я заметил, что моя версия Struts - 2.3.4, в которой должно быть НОВОЕ имя, указанное в вашем ответе. Я изменил имя фильтра на новое, которое вы указали, и теперь оно работает!

Однако, похоже, мне приходится много работать вручную. Причина, по которой я не использую встроенную функцию, заключается в том, что я использую описанный здесь элемент управления Infragistics jQuery igUploadhttp://www.igniteui.com/file-upload/overview и здесьhttp://help.infragistics.com/Doc/jQuery/2014.2/CLR4.0?page=igUpload_igUpload.html , При использовании этого элемента управления он отправляет сообщение POST, как я описал в моем вопросе. Я предполагаю, что это сделано для работы с ASP.NET MVC Helper, и я даже не знаю, что это такое. Infragistics IgniteUI никогда не упоминает распорки в своей документации. Учитывая, что я использую igUpload, можете ли вы сделать какие-либо другие предложения, чтобы сделать это проще?

Ответы на вопрос(1)

Ваш ответ на вопрос