使用springMVC,图片上传,过滤器拦截获取不了请求参数。
页面发起的请求有三个参数:op,name,picture。
HTML代码如下:
<form action="<%=request.getContextPath()%>/app" method="post" enctype="multipart/form-data"> op:<input name="op" value="user.regist" /><br/> 姓名(name):<input name="name" /><br/> 头像(picture):<input name="picture" type="file"><br/> <input type="submit"/> </form>过滤器的实现的功能是获取op参数进行请求转发。 过滤器代码如下:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest)request; String op = httpRequest.getParameter("op"); op = op.replace(".", "/"); request.getRequestDispatcher("/app/"+op).forward(request, response); }遇到的问题是表单的属性是enctype="multipart/form-data"时,过滤器取得的op值是null。 请教过滤器如何在表单属性enctype="multipart/form-data"时获取到op的值?是不是 过滤器拦截到请求时表单还没有提交完毕,获取不了表单里面的值?求解决方案。
http://www.oschina.net/code/explore/cos/multipart/MultipartParser.java
参考一下,cos的解析。form-data的方式需要自己分析请求包 ######form属性enctype="multipart/form-data"时,参数是以流的形式传递给服务端的,filter在spring还没有解释请求时就拦截了。在这获取参数的话要自己根据分隔符解释流。我改用spring的拦截器实现转发请求了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。