我已使用下面显示的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.
请帮我解决这个问题。