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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值