2016-10-13 1 views
0

Ich habe versucht, diesen Fehler im Internet zu finden, aber ich konnte mein Problem nicht lösen. Ich versuche, ein Bild in einem lokalen Ordner in meinem Projekt zu speichern und ich verwenden, um das folgende Tutorial, das zu tun:Post-Methode in Servlet erhält keine Werte von JSP

http://docs.oracle.com/javaee/6/tutorial/doc/glraq.html

ich keine Fehler empfangen, wenn ich den Code zu kompilieren, aber ich erhielt eine Nullpointer . Das ist mein jsp:

<form action="uploadImagem.do" method="post" enctype="multipart/form-data" 
     name="productForm" id="productForm"><br><br> 
<form method="POST" action="upload" enctype="multipart/form-data" > 
     File: 
     <input type="file" name="file" id="file" /> <br/> 
     Destination: 
     <input type="text" value="/tcc_SI_M_12 - 12-10-2016_v1/images" name="destination" disabled/> 
     </br> 
     <input type="submit" value="Upload" name="upload" id="upload" /> 
    </form> 

Und das ist mein Servlet:

@WebServlet("/uploadImagem.do") 
public class uploadImagem extends HttpServlet { 
private static final long serialVersionUID = 1L; 
private final static Logger LOGGER = 
     Logger.getLogger(FileUpload.class.getCanonicalName()); 


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // Create path components to save the file 
    final String path = request.getParameter("destination"); 
    System.out.println("Parametros: " + path); 
    final Part filePart = request.getPart("file"); 
    final String fileName = getFileName(filePart); 


    OutputStream out = null; 
    InputStream filecontent = null; 
    final PrintWriter writer = response.getWriter(); 

    try { 
     out = new FileOutputStream(new File(path + File.separator 
       + fileName)); 
     filecontent = filePart.getInputStream(); 

     int read = 0; 
     final byte[] bytes = new byte[1024]; 

     while ((read = filecontent.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 
     writer.println("New file " + fileName + " created at " + path); 
     LOGGER.log(Level.INFO, "File{0}being uploaded to {1}", 
       new Object[]{fileName, path}); 
    } catch (FileNotFoundException fne) { 
     writer.println("You either did not specify a file to upload or are " 
       + "trying to upload a file to a protected or nonexistent " 
       + "location."); 
     writer.println("<br/> ERROR: " + fne.getMessage()); 

     LOGGER.log(Level.SEVERE, "Problems during file upload. Error: {0}", 
       new Object[]{fne.getMessage()}); 
    } finally { 
     if (out != null) { 
      out.close(); 
     } 
     if (filecontent != null) { 
      filecontent.close(); 
     } 
     if (writer != null) { 
      writer.close(); 
     } 
    } 
} 

private String getFileName(final Part part) { 
    final String partHeader = part.getHeader("content-disposition"); 
    LOGGER.log(Level.INFO, "Part Header = {0}", partHeader); 
    for (String content : part.getHeader("content-disposition").split(";")) { 
     if (content.trim().startsWith("filename")) { 
      return content.substring(
        content.indexOf('=') + 1).trim().replace("\"", ""); 
     } 
    } 
    return null; 

} 

Bitte beachten Sie, dass ich einige Änderungen in der Anleitung oben gemacht haben. Außerdem habe ich und System.out hinzugefügt, um mir den Mut in den Variablen zu zeigen, und ich erhielt null.

Können Sie mir bitte helfen?

Vielen Dank!

+0

Warum haben Sie @MultipartConfig nicht in Ihr Servlet aufgenommen? – rickz

Antwort

0

Warum verwenden Sie zwei Formulare? Entfernen Sie den folgenden Code:

<form method="POST" action="upload" enctype="multipart/form-data" >