Servlet3.0在文件上传时遇到的错误及解决方法

来源:互联网 发布:qt5.9连接mysql数据库 编辑:程序博客网 时间:2024/05/16 08:55

1.doesn't contain a multipart/form-da

严重: Servlet.service() for servlet [FileUploadServlet] in context with path [/fileuploadservlet] threw exception [org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded] with root cause

org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeExceptionthe request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded

解决方法:网上一般说的是在有type=file的控件时要给form设置属性enctype="multipart/form-data" method ="post"

如果这属性设置之后还是会报这样的错误呢?

那就要检查一下拼写错误,如form-data的“-”前后不能有空格字符等。

 

1.request对象没有getPart()方法

明明javax.servlet-3.0.jar包已经引入,打开jar包中的class文件,能够看到getPart()方法,为什么在编译的时候就是调不出来getPart()方法?

解决方法:MyEclipse自带的javaee.jar包,其中有HttpServletRequest.class类和HttpServletResponse类。Javaee.jar的路径是:..\MyEclipse\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.5.0.me201207171805\data\libraryset\EE_5(不同的myEclipse版本目录有出入)

Javaee.jar包中包含HttpServletRequest.class类和HttpServletResponse类的路径和我们引入的第三方jarjavax.servlet-3.0.jar中这两个类的路径是一致的,所以我们引入jar包时:

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.annotation.*;

同名的类和方法都是引用的javaee.jar中的源码。Javaee.jar中不含getPart()方法,我们自然就调用不到。

要想调用,用WinRAR压缩软件将javaee.jar打开(打开,不是解压),在javax\servlet\http路径下找到HttpServletRequest.class类和HttpServletResponse类并将其删除。然后同样的方法在javax.servlet-3.0.jar中找到这两个类,把这两个类添加到javaee.jar压缩包的相应位置并压缩。这样就完成了类的替换。重启myEclipseok

 

2.java.io.IOExceptionjava.io.FileNotFoundException: D:\tomcat\apache-tomcat-7.0.62\webapps\fileuploadservlet\member\newtex\ t222.txt (系统找不到指定的路径。)

解决方法:

显然是路径设置错了。也就是文件要上传的位置指定不明。断点调试或者逐步打印一下后台的代码,在路径合成中哪里出错了就ok

0 0
原创粉丝点击