Was frisst meine uploadFile, bevor mein POST-Servlet sie verarbeiten kann?

Ich verwende Infragistics IgniteUI igUpload auf meiner Webseite, um Dateien auf unseren Apache Tomcat-Server hochzuladen. Während die Dateien hochgeladen werden, kann ich in meinem Servlet-Code nicht auf sie zugreifen. Vielleicht hat hier jemand eine Idee, was passiert.

Wenn igUpload die Datei über Ajax sendet, wird eine hübsch geformte POST-Anforderung mit Headern angezeigt:

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

und die Benutzerdatei im Post-Bereich mit diesem 'Header':

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

Mein Servlet wird dann aufgerufen, aber wenn ich dies verwende (Code-Snippet aus FileUpload-Dokument):

                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);

Die Liste "Artikel" ist IMMER leer. Beim Eclipse-Debug kann ich jedoch SEHEN, wie tief im Request-Objekt ein DiskFileItem vergraben ist, das auf die Benutzerdatei verweist, die in einem temporären Verzeichnis gespeichert wurde. Von diesem Beitrag Datei-Upload mit ServletFileUploads parseRequest? anscheinend nimmt struts2 die datei bevor mein servlet die chance dazu bekommt. Also habe ich in struts2 FileUploadInterceptor gesucht und nicht viel gefunden. Ich habe versucht, es mit meinem eigenen Interceptor zu überschreiben, und es wird nie aufgerufen. Ich habe die FileUpload-Quelle, damit ich Haltepunkte setzen kann, und sie wird während dieses FileUpload-Vorgangs nie aufgerufen. Der erste Code, den ich ausführen sehe, ist mein Servlet, und zu diesem Zeitpunkt ist die Datei bereits verarbeitet.

WAS isst / lädt / speichert meine Datei tatsächlich und wie kann ich sie entweder anhalten oder damit arbeiten, damit ich die hochgeladene Datei tatsächlich verwenden kann?

Vielen Dank für jede Einsicht.

================================================= =================

Ich habe die Konstante struts.xml von @Andrea Ligios Antwort unten für mein Servlet hinzugefügt, und das hat nicht funktioniert. Dann habe ich die Datei web.xml überprüft und festgestellt, dass diese Filterzeilen vorhanden sind, außer es war

org.apache.struts2.dispatcher.FilterDispatcher

Allerdings ist mir aufgefallen, dass meine Struts-Version 2.3.4 ist, die den NEUEREN Namen haben sollte, den Sie in Ihrer Antwort aufgeführt haben. Ich habe den Filternamen in den von Ihnen angegebenen Namen geändert und jetzt funktioniert es!

Obwohl es so aussieht, muss ich viel von Hand arbeiten. Der Grund, warum ich die integrierte Funktion nicht verwende, liegt darin, dass ich das hier beschriebene jQuery igUpload-Steuerelement von Infragistics verwende.http: //www.igniteui.com/file-upload/overvie und hierhttp: //help.infragistics.com/Doc/jQuery/2014.2/CLR4.0? page = igUpload_igUpload.html. Bei Verwendung dieses Steuerelements wird die in meiner Frage beschriebene POST-Nachricht gesendet. Ich vermute, es ist für die Arbeit mit ASP.NET MVC Helper gemacht und ich weiß nicht einmal, was das ist. Infragistics IgniteUI erwähnt in seiner Dokumentation niemals Streben. Können Sie angesichts der Tatsache, dass ich igUpload verwende, weitere Vorschläge machen, um dies zu vereinfachen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage