title: Save Html image input as a java File
body: <p>I am trying to get an image file uploaded by the client and let them store it in a remote server. The code is all set up fine and able to save the image as a Blob when I hard code the file path. </p>
  
  <p>But how do I store the HTML file(image) input as a File? I save String values as follows which works but whats the equivalent when I want to save an image as a File in Java? </p>
  
  <p>I tried the following where I have commented but it returns an error as follows. </p>
  
  <blockquote>
    <p>Type mismatch: cannot convert from String to File</p>
  </blockquote>
  
  <pre><code>&lt;!-- HTML Form where the File is being uploaded --&gt; 
  &lt;form method="post" action="process.jsp"&gt;
      &lt;div class="form-group"&gt;
          &lt;input type="text" class="form-control" id="contact" name="contact"&gt;
      &lt;/div&gt;  
      &lt;div class="form-group"&gt;
          &lt;input type="file" class="form-control" id="file" name="file"&gt;
      &lt;/div&gt;
      &lt;button type="submit" class="btn"&gt;Submit&lt;/button&gt;
  &lt;/form&gt;
  
  
  //process.jsp
  &lt;body&gt;
  &lt;%
      //String works. 
      String contact = request.getParameter("contact");
  
      //Harcoding file path works.
      File img = new File("C:\\Users\\username\\Desktop\\a.jpg");
  
      //**ERROR** - Trying this but returns error mentioned above. 
      //File img= request.getParameter("file");
  
      PreparedStatement stmt;
      FileInputStream fis;
  
      try {
          Class.forName("com.mysql.jdbc.Driver");
          Connection conn = DriverManager.getConnection("jdbc:mysql://1.1.1.1:3306/something",
                  "username", "password");
  
          stmt = conn.prepareStatement(
                  "INSERT INTO table(contact, image) values (?, ?)");
          stmt.setString(1, contact);
  
          fis = new FileInputStream(img);
          stmt.setBinaryStream(2, fis, (int)(img.length()));
          stmt.executeUpdate();
      }
      catch (Exception e) {
          e.printStackTrace();
      }
  %&gt;
  &lt;/body&gt;
  </code></pre>
  
  <blockquote>
    <p></p>
  </blockquote>
  
  <pre><code>//Full Error message: 
  
  org.apache.jasper.JasperException: Unable to compile class for JSP: 
  
  An error occurred at line: 24 in the jsp file: /process.jsp
  Type mismatch: cannot convert from String to File
  21:     String contact= request.getParameter("contact");
  22:     //File img = new File("C:\\Users\\username\\Desktop\\a.jpg");
  23: 
  24:     File img = request.getParameter("file");
  25: 
  26:     PreparedStatement stmt;
  27:     FileInputStream fis;
  
  
  Stacktrace:
      org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
      org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
      org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485)
      org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
      org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
      org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
      org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  </code></pre>