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$InvalidContentTypeException: the 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类的路径和我们引入的第三方jar包javax.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压缩包的相应位置并压缩。这样就完成了类的替换。重启myEclipse,ok。
2.java.io.IOException: java.io.FileNotFoundException: D:\tomcat\apache-tomcat-7.0.62\webapps\fileuploadservlet\member\newtex\ t222.txt (系统找不到指定的路径。)
解决方法:
显然是路径设置错了。也就是文件要上传的位置指定不明。断点调试或者逐步打印一下后台的代码,在路径合成中哪里出错了就ok。