2017-08-22 2 views
0

Das perplex mich. Im folgenden Code wird nicht einmal "1" in der Konsole ausgedruckt. Wenn ich in der ersten system.out-Zeile einen Haltepunkt platziere (mit eclipse), beendet der Debugger ihn nicht. Keine Ausnahmen ausgelöst. Ich habe auch versucht, ein Null-Argument an den Konstruktor von SFU zu übergeben, um es zu zwingen, eine Ausnahme zu werfen, aber nichts ist passiert.Apache ServletFIleUpload friert ein

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
     System.out.println("1"); 

     try {        
      ServletFileUpload upload = new ServletFileUpload();    
     } catch (Throwable e) { 
      throw new ServletException(e); 
     } 

     System.out.println("2"); 
} 

und die HTML-

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <title>File Upload</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
    <form method="POST" action="loadFile" enctype="multipart/form-data" > 
     <input type="file" name="myFile" id="myFile" /> <br/> 
     <input type="submit" value="Upload" name="upload" id="upload" /> 
    </form> 
</body> 
</html> 

Antwort

0

versuchen entfernen "wirft ServletException, IOException" von

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

und ändern

try {        
      ServletFileUpload upload = new ServletFileUpload();    
     } catch (Throwable e) { 
      throw new ServletException(e); 
     } 

bis:

try {        
      ServletFileUpload upload = new ServletFileUpload(); 
     //... rest of code 

     } catch (FileUploadException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

Fügen Sie alle anderen Ausnahmen von der catch-Klausel, werfen Sie sie nicht. Deshalb sollten Sie nicht sehen, was der Fehler ist etwa

auch bemerkt, dass der Name des Formulars Aktion ist loadfile tut dies entspricht Ihren Servlets Namen? Servlets haben normalerweise einen großgeschriebenen Anfangsbuchstaben! Mein Verdacht ist, dass dies das eigentliche Problem ist. Sie senden eine Post-Anfrage an ein Servlet, das der Server nicht finden kann.