2016-04-23 60 views
0

当我尝试上传文件时,出现空白屏幕。它转到servlet,但显示空白浏览器..什么是需要的jar文件,以及如何指定文件路径。当我degug文件路径被认为是null我无法上传文件,它需要什么jar文件?

import java.io.File; 
import java.util.Iterator; 
import java.util.List; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 

public class Upload extends HttpServlet { 

    private boolean isMultipart; 
    private String filePath; 
    private int maxFileSize = 50 * 1024; 
    private int maxMemSize = 4 * 1024; 
    private File file ; 

    public void init(){ 
     // Get the file location where it would be stored. 
     filePath = 
      getServletContext().getInitParameter("file-upload"); 
    } 
    public void doPost(HttpServletRequest request, 
       HttpServletResponse response) 
       throws ServletException, java.io.IOException { 
     // Check that we have a file upload request 
     isMultipart = ServletFileUpload.isMultipartContent(request); 
     response.setContentType("text/html"); 
     java.io.PrintWriter out = response.getWriter(); 
     if(!isMultipart){ 
     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:\\Program Files\\Apache Software  Foundation\\Apache Tomcat 8.0.3\\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(filePath + 
       fileName.substring(fileName.lastIndexOf("\\"))) ; 
      }else{ 
       file = new File(filePath + 
       fileName.substring(fileName.lastIndexOf("\\")+1)) ; 
      } 
      fi.write(file) ; 
      out.println("Uploaded Filename: " + fileName + "<br>"); 
     } 
     } 
     out.println("</body>"); 
     out.println("</html>"); 
    }catch(Exception ex) { 
     System.out.println(ex); 
    } 
    } 
    public void doGet(HttpServletRequest request, 
         HttpServletResponse response) 
     throws ServletException, java.io.IOException { 

     throw new ServletException("GET method used with " + 
       getClass().getName()+": POST method required."); 
    } 
} 

的web.xml页面

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
      <servlet-name>Upload</servlet-name> 
     <servlet-class>Upload</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Upload</servlet-name> 
     <url-pattern>/Upload</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
     </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <context-param> 
    <description>Location to store uploaded file</description> 
    <param-name>file-upload</param-name> 
    <param-value> 
     C:\Program Files\Apache Software Foundation\Apache Tomcat  8.0.3\webapps\data\ 
    </param-value> 
</context-param> 

</web-app> 
+0

如何被宣布在web.xml中的servlet?你有一个名为file-upload的初始化参数吗? – 2016-04-23 13:40:26

回答

0
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
      <servlet-name>Upload</servlet-name> 
     <servlet-class>Upload</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Upload</servlet-name> 
     <url-pattern>/Upload</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
     </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <context-param> 
    <description>Location to store uploaded file</description> 
    <param-name>file-upload</param-name> 
    <param-value> 
     C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.3\webapps\data\ 
    </param-value> 
</context-param> 

</web-app> 
+0

不,我没有fileupload参数 – nimmy

+0

这不能回答这个问题。你应该编辑你的问题,并将其添加为问题的一部分。 – Tirath

+0

已在问题中编辑 – nimmy