2017-04-20 78 views
0

我正在开发中,我有一个用的index.jsp形式的Web应用程序上传文件到servlet:如何在将文件上传到servlet后管理html网站?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    import="com.uteva.AppWebNieve.ProcesadoExcel" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" lang="es" xml:lang="es"> 

     <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO- 
     8859-1"> 
      <title>AppWebInformesNieve</title> 
     </meta> 
    </head> 
    <body> 


     <form action="upload" method="post" enctype="multipart/form-data"> 
     <input type="file" name="file" /> 
      <input value="Subir Excel" type="submit" /> 
     </form> 

      </body> 
     </html> 

然后我上传文件正确与我的java类:

  @Override 
     protected void doPost(HttpServletRequest 
       request,HttpServletResponse response) throws ServletException, 
      IOException{ 
     //***************AQUI MANEJAMOS LA SUBIDA DEL FICHERO LINCES DE INCIDENCIAS*********************** 
     // Get the file location where it would be stored. 
      //String filePath = getServletContext().getInitParameter("file-upload");    
      boolean isMultipart;  
      int maxFileSize = 10000 * 1024; 
      int maxMemSize = 1000 * 1024; 
      File file ; 
     // Check that we have a file upload request 
      isMultipart = ServletFileUpload.isMultipartContent(request); 
      response.setContentType("text/html"); 
      java.io.PrintWriter out = response.getWriter(); 
      if(!isMultipart){ //No se ha podido subir el fichero 
      /*out.println("<html>"); 
      out.println("<head>"); 
      out.println("<title>Servlet upload</title>"); 
      out.println("</head>"); 
      out.println("<body>"); 
      out.println("<p>No file uploaded</p>"); 
      out.println("</body>"); 
      out.println("</html>");*/ 
      return; 
      } 
      DiskFileItemFactory factory = new DiskFileItemFactory(); 
      // maximum size that will be stored in memory 
      factory.setSizeThreshold(maxMemSize); 
      // Location to save data that is larger than maxMemSize. 
      factory.setRepository(new File("c:\\temp")); 

      // Create a new file upload handler 
      ServletFileUpload upload = new ServletFileUpload(factory); 
      // maximum file size to be uploaded. 
      upload.setSizeMax(maxFileSize); 

      try{ 
      // Parse the request to get file items. 
      List fileItems = upload.parseRequest(request); 

      // Process the uploaded file items 
      Iterator i = fileItems.iterator(); 

      out.println("<html>"); 
      out.println("<head>"); 
      out.println("<title>Servlet upload</title>");   
      out.println("</head>"); 
      out.println("<body>"); 
      while (i.hasNext()) 
      { 
      FileItem fi = (FileItem)i.next(); 
      if (!fi.isFormField()) 
      { 
       // Get the uploaded file parameters 
       String fieldName = fi.getFieldName(); 
       String fileName = fi.getName(); 
       String contentType = fi.getContentType(); 
       boolean isInMemory = fi.isInMemory(); 
       long sizeInBytes = fi.getSize(); 
       // Write the file 
       if(fileName.lastIndexOf("\\") >= 0){ 
        file = new File(filename + 
        fileName.substring(fileName.lastIndexOf("\\"))) ; 
       }else{ 
        file = new File(filename + 
        fileName.substring(fileName.lastIndexOf("\\")+1)) ; 
       } 
       fi.write(file) ; 
       out.println("Uploaded Filename: " + fileName + "<br>"); 
       System.out.println("Fichero "+filename+" subido correctamente al servidor!!"); 
      } 
      } 
      out.println("</body>"); 
      out.println("</html>"); 
     }catch(Exception ex) { 
      System.out.println(ex); 
     } 
     } 

但上传后,这打开一个新的简单的HTML,这是建立在以前的java方法out.println ...

关键是,我怎么可以管理这个上传留在相同的HTML知道是否文件已经上传或者没有这样做我有这个文件的其他事情?我不能使用get方法来上传文件,并让表单动作变为空白...

或者,打开一个新的html,必须有另一种方法来制作更复杂的html,而不是在Java函数中使用out.println ....

谢谢。

+0

我想我需要用Javascript来上传文件 –

回答