common-upload框架,出现java.io.FileNotFoundException?

发布于 2021-11-22 09:36:40 字数 5722 浏览 523 评论 7

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

绝情姑娘 2021-11-23 16:04:39

哦,我懂了!谢谢~

裸钻 2021-11-23 16:00:05

太低级错误了  路劲问题

月牙弯弯 2021-11-23 15:10:33

有点没明白,能说详细一点么?

清欢 2021-11-23 14:58:16

哦,我懂了! 奇怪,书里面好像没有提到这个问题……

冷弦 2021-11-23 14:35:32

不应该是没有权限,而是这个文件路径没有被创建,首先应该验证路径是否为文件夹,然后mkdirs()方法创建它,最后追加文件名进行文件写入操作

疑心病 2021-11-23 00:24:25

回复
与权限没有关系,确实是目录没有创建的原因!

裸钻 2021-11-22 13:32:30

E:\fileupload

你的这个路径。不是你的webapps目录下,应用是没有权限向webapps之外的路径写文件。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文