我试图通过从user获取文件来将图像文件插入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)
答案 0 :(得分:0)
您无法在网络应用程序中执行此操作:
File img = new File(request.getParameter("rfile"));
从异常消息中可以看到您的应用程序正在尝试在当前文件夹中找到该文件。这与您要添加的图像的位置不同,尤其是当Web应用程序在与Web浏览器不同的计算机上运行时。
澄清:如果您的webapp与Web浏览器在同一台计算机上运行,则提交完整文件路径(c:\my_images\photo_of_me.jpg
)将起作用,因为JVM可以访问它。但只能通过一个完整的文件名。如果您的webapp在另一台计算机上,添加文件的唯一方法是使用Commons FileUpload接受文件上传。
您可能要做的是“上传”图像并将其保存到数据库中。 为此,您需要使用Apache Commons FileUpload。