common-upload框架,出现java.io.FileNotFoundException?
1.错误信息
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: E:UploadFilefile1.txt (系统找不到指定的路径。) org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
root cause
java.io.FileNotFoundException: E:UploadFilefile1.txt (系统找不到指定的路径。) java.io.FileOutputStream.open(Native Method) java.io.FileOutputStream.<init>(FileOutputStream.java:179) java.io.FileOutputStream.<init>(FileOutputStream.java:131) org.apache.commons.fileupload.DefaultFileItem.write(DefaultFileItem.java:392) org.apache.jsp.upload_jsp._jspService(upload_jsp.java:106) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.36 logs.
2.代码
update.html <html> <head><title>文件上传</title></head> <body> <form action="upload.jsp" method="POST" enctype="Multipart/form-data"> <table> <tr> <td>请选择要上传的文件:</td> <td><input type="file" name="file1" size="40"></td> </tr> <tr> <td>请输入文件的描述:</td> <td><input type="text" name="desc1" size="40"></td> </tr> <tr> <td>请选择要上传的文件:</td> <td><input type="file" name="file2" size="40"></td> </tr> <tr> <td>请输入文件的描述:</td> <td><input type="text" name="desc2" size="40"></td> </tr> <tr> <td><input type="submit" value="重填"></td> <td><input type="submit" value="上传"></td> </tr> </table> </form> </body> </html>
upload.jsp
<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.List,java.util.Iterator"%> <%@ page import="org.apache.commons.fileupload.*"%> <%@ page import="java.io.File"%> <html> <head><title>upload</title></head> <body> <% DiskFileUpload dfu=new DiskFileUpload(); //设置上传数据的最大大小为10M。 dfu.setSizeMax(0xA00000); //设置内存缓冲区的阀值为512K。 dfu.setSizeThreshold(0x80000); //设置临时存储文件的目录为E:fileupload。 dfu.setRepositoryPath("E:\fileupload"); //得到FileItem对象的列表。 List fileItems=dfu.parseRequest(request); Iterator it = fileItems.iterator(); %> <table cellpadding="3" border="1"> <% //依次处理每个上传的文件 while (it.hasNext()) { FileItem item = (FileItem) it.next(); //判断是否是文件域的表单信息 if (!item.isFormField()) { String name = item.getName(); long size = item.getSize(); if((name==null || name.equals("")) && size==0) continue; %> <tr> <td><%=item.getName()%></td> <td><%=item.getSize()%></td> </tr> <% //保存上传的文件到指定的目录 File dir=new File("E:\UploadFile"); //如果浏览器传送的文件名是全路径名,则取出文件名。 int index=name.lastIndexOf(File.separator); if(index>0) name=name.substring(index+1,name.length()); File file=new File(dir,name); item.write(file); //注:1.应该是问题出在这一行;2.之前调试时执行这一行出现错误——FileNotFoundException,后来运行程序的错误信息如上(顺便问一下:代码没改动,为什么错误信息会不一样呢?)! } else { %> <tr> <td><%=item.getFieldName()%></td> <td><%=item.getString()%></td> </tr> <% } } %> </table> </body> </html>
------------------
问题:
1.代码是孙鑫书上的例子,但不知道怎么会出现这个错误?
2.
item.write(file); //注:1.应该是问题出在这一行;2.之前调试时执行这一行出现错误——FileNotFoundException,后来运行程序的错误信息如上(顺便问一下:代码没改动,为什么错误信息会不一样呢?)!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
哦,我懂了!谢谢~
太低级错误了 路劲问题
有点没明白,能说详细一点么?
哦,我懂了! 奇怪,书里面好像没有提到这个问题……
不应该是没有权限,而是这个文件路径没有被创建,首先应该验证路径是否为文件夹,然后mkdirs()方法创建它,最后追加文件名进行文件写入操作
回复
与权限没有关系,确实是目录没有创建的原因!
E:\fileupload
你的这个路径。不是你的webapps目录下,应用是没有权限向webapps之外的路径写文件。