我试图通过从用户获取文件插入一个图像文件到MySql DB。在插入文件的代码工作良好,但在转换文件到Blob格式我得到一个java.io.FileNotFoundException
这是我的JSP代码:
File img= new File(request.getParameter("rfile"));
String accno=request.getParameter("raccno");
String reportname=request.getParameter("reportname");
String date=request.getParameter("rdate");
PreparedStatement pt2=null;
pt2= connection.prepareStatement("insert into reportuser(Account_No,date,report_name,report_image)"+ "values(?,?,?,?)");
pt2.setString(1, accno);
pt2.setString(2, date);
pt2.setString(3, reportname);
pt2.setBinaryStream(4, (InputStream) fiss, (int) (img.length()));
pt2.executeUpdate();InputStream fiss=new FileInputStream(img);
异常报告如下:
org.apache.jasper.JasperException: An exception occurred processing JSP page /add_report.jsp at line 12
9: String reportname=request.getParameter("reportname");
10: String date=request.getParameter("rdate");
11: File img= new File(request.getParameter("rfile"));
12: InputStream fiss=new FileInputStream(img);
后面跟着:
root cause
java.io.FileNotFoundException: logo.png (The system cannot find the file specified)
java.io.FileInputStream.open(Native Method)
java.io.FileInputStream.<init>(FileInputStream.java:138)
org.apache.jsp.add_005freport_jsp._jspService(add_005freport_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
你不能在web应用程序中这样做:
File img = new File(request.getParameter("rfile"));
从异常消息中,您可以看到应用程序正在尝试定位其当前文件夹中的文件。这与您要添加的图像的位置不同,特别是如果web应用程序运行在与您的web浏览器不同的计算机上。
澄清:如果你的web应用程序与你的web浏览器运行在同一台计算机上,提交完整的文件路径(c:my_imagesphoto_of_me.jpg
)将工作,因为JVM可以访问它。但只能通过一个完整的文件名。如果你的web应用在另一台计算机上,添加文件的唯一方法是通过使用Commons FileUpload接受文件上传。
你可能想要做的是"上传"图像并将其保存到数据库。为此,您需要使用Apache Commons FileUpload。