title: JSP upload File failed
body: <p>I am going to build up a simple jspfile to handle upload files using Servlet. When it comes to the execution, it shows the following message</p>
  
  <pre><code>demo Fail: org.apache.catalina.connector.RequestFacade cannot
  
   be cast to org.apache.tomcat.util.http.fileupload.RequestContext
  </code></pre>
  
  <p>Would you please tell me how to convert the HTTP request to RequestContext ? </p>
  
  <p>The below is my code for jsp front-page</p>
  
  <pre><code>    &lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
      pageEncoding="ISO-8859-1"%&gt;
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
  &lt;html&gt;
  &lt;head&gt;
  &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
  &lt;title&gt;Insert title Test Upload&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  
  &lt;form action="uploadFile" method="post" enctype="multipart/form-data"&gt;
      &lt;input type="file" name="file" /&gt;
      &lt;input type="submit" /&gt;
  &lt;/form&gt;
  
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>The below is my code for the Servlet</p>
  
  <pre><code>import java.io.*;
  import java.net.URL;
  import java.net.URLConnection;
  import java.net.URLEncoder;
  import java.sql.*;
  import java.util.Enumeration;
  import java.util.Iterator;
  import java.util.List;
  
  import javax.servlet.*;
  import javax.servlet.http.*;
  
  import org.apache.tomcat.util.http.fileupload.FileItem;
  import org.apache.tomcat.util.http.fileupload.FileItemFactory;
  import org.apache.tomcat.util.http.fileupload.FileUploadException;
  import org.apache.tomcat.util.http.fileupload.RequestContext;
  import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
  import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
  
  /**
   * Servlet implementation class getLogin
   */
  public class uploadFile extends HttpServlet {
  
      private static final long serialVersionUID = 17864986468494864L;
  
  
      // location to store file uploaded
      private static final String UPLOAD_DIRECTORY = "upload";
  
      // upload settings
  
      public uploadFile() {
          super();
          // TODO Auto-generated constructor stub
      }
  
      /**
       * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
       */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          // TODO Auto-generated method stub
          //doPost(request, response);
          //throw new ServletException("GET method used with " +  getClass( ).getName( )+": POST method required.");
          request.getRequestDispatcher("/WEB-INF/upload.jsp").forward(request, response);
      }
  
      /**
       * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
       */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          System.out.println("demo");
  
          if (!ServletFileUpload.isMultipartContent(request)) {
              // if not, we stop here
              PrintWriter writer = response.getWriter();
              writer.println("Error: Form must has enctype=multipart/form-data.");
              writer.flush();
              return;
          }
  
          // configures upload settings
          DiskFileItemFactory factory = new DiskFileItemFactory();
          // sets temporary location to store files
          factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
  
          ServletFileUpload upload = new ServletFileUpload(factory);
  
  
          // constructs the directory path to store upload file
          // this path is relative to application's directory
          String uploadPath = getServletContext().getRealPath("")+ File.separator + UPLOAD_DIRECTORY;
  
          // creates the directory if it does not exist
          File uploadDir = new File(uploadPath);
          if (!uploadDir.exists()) {
              uploadDir.mkdir();
          }
  
          try {
              // parses the request's content to extract file data
  
              System.out.println(uploadPath);
              List&lt;FileItem&gt; formItems = upload.parseRequest((RequestContext)request);
              if (formItems != null &amp;&amp; formItems.size() &gt; 0) {
                  // iterates over form's fields
                  for (FileItem item : formItems) {
                      // processes only fields that are not form fields
                      if (!item.isFormField()) {
                          String fileName = new File(item.getName()).getName();
                          String filePath = uploadPath + File.separator + fileName;
                          File storeFile = new File(filePath);
                          // C:\tomcat\apache-tomcat-7.0.40\webapps\data\
                          // saves the file on disk
                          item.write(storeFile);
                          request.setAttribute("message","Upload has been done successfully!");
                          System.out.println("demo Success");
                      }
                  }
              }
          } catch (Exception ex) {
              request.setAttribute("message","There was an error: " + ex.getMessage());
              System.out.println("demo Fail: " +   ex.getMessage() );
          }
      }
  
  
  }
  </code></pre>