SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题

1.文件上传关键代码:
[color=red]DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
@SuppressWarnings("rawtypes")
List fileList = null;
try {
fileList = upload.parseRequest(request);
} catch (FileUploadException ex) {
ex.printStackTrace() ;
}[/color]
这里的request对象是初始时HttpServletRequest的对象。刚开始认为fileList对象不会为空,但是却空。主要原因在于我配置的spring MVC的文件解析器如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
</bean>
关键之处在于CommonsMultipartResolver中的方法parseRequest已经解析过request对象了。方法如下:

[img]http://dl2.iteye.com/upload/attachment/0107/5906/c9a6e830-d5e0-36e9-b4e7-f577a830d449.jpg[/img]

2.问题解决:
(1).可以把上面的spring MVC文件解析器注释掉,解析就不为空了。个人建议不要这样做,因为注释之后图片就不能上传了。
(2).配置自定义的文件解析器就可以了。我是这样配置的如下:
[color=red]<bean id="multipartResolver" class="sh.xz.dbutil.MyMultipartResolver">
<property name="excludeUrls">
<list>
<value>/company/add</value>
</list>
</property>
<property name="maxUploadSize" value="10485760" />
</bean>[/color]
value路径是需要文件的controler路径。

[color=red]public class MyMultipartResolver extends CommonsMultipartResolver{
private List<String> excludeUrls;

public void setExcludeUrls(List<String> excludeUrls) {
this.excludeUrls = excludeUrls;
}

public List<String> getExcludeUrls() {
return excludeUrls;
}[/color]

[color=red] @Override
public boolean isMultipart(HttpServletRequest request) {
for (String url: excludeUrls) {
if (request.getRequestURI().contains(url)) {
return super.isMultipart(request);
}
}
return false;
}
}[/color]
这样既可以上传的文件可以得到你想要的值,也可以上传图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值