从JSP向JSP页面发送一个图像文件时,如何读取?

时间:2018-10-22 16:43:15

标签: java database jsp

我已使用下面显示的JSP文件中的代码来获取png,jpeg和jpg格式的输入文件。

Citizenship: <input type="file" name="citizen" value="Citizenship" accept="image/png, image/jpeg, image/jpg" required >
Degree:  <input type="file" name="degree" value="Degree" accept="image/png, image/jpeg, image/jpg" required>

我使用form标签将这些文件发送到了下一个jsp页面。为此编写的代码是:

<form method="POST" action="continue_AdmissionProcessing_Record.jsp">

在“ continue_AdmissionProcessing_Record.jsp”页面中,我尝试使用以下代码读取此png,jpeg和jpg格式的文件:

 <%BufferedImage citizen=ImageIO.read(new File(request.getParameter("citizen")));%>
        <%BufferedImage degree=ImageIO.read(new File(request.getParameter("degree")));%>

我使用以下代码在Java中调用了该方法,以将上述数据保存在数据库中:

<%String available=UpdataStudentInfo.useValues(citizen, degree);%>

在Java中,我使用以下代码将图像转换为流:

 ByteArrayOutputStream os1 = new ByteArrayOutputStream();
    ImageIO.write(citizen, "jpg", os1);
    InputStream citizen_is = new ByteArrayInputStream(os1.toByteArray());

    ByteArrayOutputStream os2 = new ByteArrayOutputStream();
    ImageIO.write(degree, "jpg", os2);
    InputStream degree_is = new ByteArrayInputStream(os2.toByteArray());

此后,我使用以下代码将此数据保存到数据库:

try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();   
      try{
                     Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/crm","root","");
                     PreparedStatement stmt=con.prepareStatement("UPDATE student SET citizenship=?, degree=? WHERE sn=? ");
                     stmt.setBinaryStream(1, citizen_is);
                     stmt.setBinaryStream(2, degree_is);
                     stmt.executeUpdate();
                     con.close();
      }catch(Exception e){
          System.out.println("caught an exception"+e);
    }

但是,这导致“ continue_AdmissionProcessing_Record.jsp”页面出现以下错误:

  Type Exception Report

    Message javax.imageio.IIOException: Can't read input file!

    Description The server encountered an unexpected condition that prevented it from fulfilling the request.

    Exception

    java.io.IOException: javax.imageio.IIOException: Can't read input file!
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:485)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    Root Cause

    javax.imageio.IIOException: Can't read input file!
        javax.imageio.ImageIO.read(Unknown Source)
        org.apache.jsp.continue_005fAdmissionProcessing_005fRecord_jsp._jspService(continue_005fAdmissionProcessing_005fRecord_jsp.java:169)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    Note The full stack trace of the root cause is available in the server logs.

请帮我解决这个问题。

0 个答案:

没有答案