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);
}
...全文
1363 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在AJAX往服务器上传数据时,设置了content-type为application/x-www-form-urlencoded,此时是对整个发 送内容作了编码,并不是对名字对应的值做了编码。因此,在服务器端,通过request.getParameter("name")的方式取值,是有问题的 有两种解法办法 1)改服务器端: 采用流的方式硬编码 2)改客户端:更改数据发送结构
foreverjavaweb 2015-07-19
  • 打赏
  • 举报
回复
哪里拼写错误
李小斌同學 2015-07-14
  • 打赏
  • 举报
回复
这个问题已经解决,闹了半天是,自己的拼写错误,谨记,下次不会再犯!!!

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧