enctype="multipart/form-data" 上传文件异常,the request doesn't contain a multipart/for
李小斌同學 2015-07-05 04:41:46 2015-7-5 16:34:59 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [upload] in context with path [/lb0702_jsp] threw exception [org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header is null] with root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header is null
at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:806)
at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:261)
at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:285)
at org.apache.catalina.connector.Request.parseParts(Request.java:2724)
at org.apache.catalina.connector.Request.getParts(Request.java:2642)
at org.apache.catalina.connector.Request.getPart(Request.java:2812)
at org.apache.catalina.connector.RequestFacade.getPart(RequestFacade.java:1083)
at com.lb.servlet.UploadServlet.service(UploadServlet.java:21)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
下面是我的代码:
@WebServlet(name="upload" ,urlPatterns={"/upload"})
@MultipartConfig
public class UploadServlet extends HttpServlet {
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
String fileName = request.getParameter("name");
Part part = request.getPart("file");
out.println("上传文件的类型为:"+part.getContentType()+"<br/>");
out.println("上传文件的大小为:"+part.getSize()+"<br/>");
Collection<String> headerNames = part.getHeaderNames();
for(String headerName : headerNames){
out.println(headerName +"---->"+part.getHeader(headerName)+"<br/>");
}
//将上传的文件写入服务器
part.write(getServletContext().getRealPath("/uploadFiles")+"/"+fileName);
}