JSP使用MultipartRequest类上传图片报错的解决

目前在做一个jsp上传图片文件时报错,报错信息如下,请参考。。。

 

严重: Servlet.service() for servlet GoodsInfoServlet threw exception

java.io.IOException: Posted content type isn't multipart/form-data

at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)

at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)

at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)

at com.zuxia.servlet.GoodsInfoServlet.FileUpLoad(GoodsInfoServlet.java:125)

at com.zuxia.servlet.GoodsInfoServlet.doPost(GoodsInfoServlet.java:90)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at com.zuxia.filter.CharactEncodingFilter.doFilter(CharactEncodingFilter.java:23)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)

at java.lang.Thread.run(Thread.java:619)




最后参考了一下网上别人做的jsp上传下载图片时,看到一个熟悉的东西,就是form表单的enctype属性。在我们使用MultipartRequest进行文件上传下载时,必须将enctype属性的值设置为:multipart/form-data,如我的表单为:<form action="GoodsInfoServlet?op=add"  method="post" onSubmit="return submit_form();" enctype="multipart/form-data">
这时上传和下载才能成功。

下面一段是从网上找到的关于form表单的enctype属性的解释:
html的form表单中Enctype属性的用法:
form表单中的Enctype属性指定将数据发回到服务器时浏览器使用的编码类型。
下面是它的取值说明:
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。

表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整 的传递文件数据,进行下面的操作.
enctype="multipart/form-data"是上传二进制数据过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值