将Html图像输入保存为java文件

时间:2016-02-13 03:03:55

标签: java html jsp

我正在尝试获取客户端上传的图像文件,并让它们将其存储在远程服务器中。代码都设置得很好,并且能够在我对文件路径进行硬编码时将图像保存为Blob。

但是如何将HTML文件(图像)输入存储为文件?我将String值保存如下,但是当我想将图像保存为Java中的文件时,它是否有效?

我尝试了以下我评论的内容,但它返回如下错误。

  

类型不匹配:无法从String转换为File

<!-- HTML Form where the File is being uploaded --> 
<form method="post" action="process.jsp">
    <div class="form-group">
        <input type="text" class="form-control" id="contact" name="contact">
    </div>  
    <div class="form-group">
        <input type="file" class="form-control" id="file" name="file">
    </div>
    <button type="submit" class="btn">Submit</button>
</form>


//process.jsp
<body>
<%
    //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();
    }
%>
</body>
  

//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)

1 个答案:

答案 0 :(得分:1)

您是否已将内容类型设置为multipart/form-data?如果您的表单包含元素,则需要这样做。