找到问题了。原来是Fiter的问题,如果一个请求是Multipart请求,Spring就会自动调用MultipartResolver,
然后将 HttpServletRequest请求变为MultipartHttpServletRequest请求
然而问题出现在以下Filter[
com.duowan.lobbystat.admin.interceptor.AdminFilter
com.duowan.common.log.filter.ProfilerLoggerFilter
com.duowan.common.web.filter.xss.XSSFilter
com.duowan.lobbystat.admin.interceptor.CacheFilter
]
String reportName = request.getParameter("reportName");
String cacheKey = path + "?" + request.getQueryString() ;
XssUtil.checkXSS(request.getParameterMap());
.....以下操作,会将请求转换为GET请求,从而丢失以multipart/form-data的形式发送的数据。
经过实际证明。我comment了这些Filter,程序能正常运行。所以
如果写过滤器通过request get回参数时,需要加以下判断
public static final String MULTIPART = "multipart/";
public void doFilter(ServletRequest sRequest, ServletResponse sResponse, FilterChain filterChain) throws IOException, ServletException {
bizLog.debug(" -------------- 进入权限过滤器 ----------------- ");
HttpServletRequest request = (HttpServletRequest) sRequest;
HttpServletResponse response = (HttpServletResponse) sResponse;
if(isMultipartContent(request)) {
filterChain.doFilter(request, response);
return;
}
}
/**
* Part of HTTP content type header.
*/
public static final boolean isMultipartContent(
HttpServletRequest request) {
if (!"post".equals(request.getMethod().toLowerCase())) {
return false;
}
String contentType = request.getContentType();
if (contentType == null) {
return false;
}
if (contentType.toLowerCase().startsWith(MULTIPART)) {
return true;
}
return false;
}
所以。请相关的人员更新一些过滤器代码
注意:要是web.xml里有spring自带的过滤器,请注释,该过滤器也会把MultipartHttpServletRequest转成get请求,
从而丢失以multipart/form-data的形式发送的数据:
<!-- 浏览器不支持put,delete等method,由该filter将_method=delete转换为标准的http delete方法 -->
<!--
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springmvc</servlet-name>
</filter-mapping>
-->
相关推荐
springmvc上传文件controller,vue
springmvc带进度条上传源码
springMVC 上传文件方式springMVC 上传文件方式springMVC 上传文件方式
在上一篇SpringMVC基础教程的源码基础上增加了文件上传,多文件上传
SpringMVC文件上传与下载的实现,包括UploadController和DownloadController
由于需要我们需要在项目里自己写文件的上传和下载。这里分别有基于SpringMVC的上传和基于SSH的上传下载,欢迎下载。
springmvc上传文件所需jar包springmvc上传文件所需jar包 springmvc上传文件所需jar包
springmvc使用CommonsMultipartResolver进行文件上传所需的jar包,包含ssm框架的所需jar包
SpringMVC文件上传Demo代码
简化springMvc设置,实现上传,下载功能。
个人整理-SpringMVC上传文件的四种方法,汉jar包,含计时
在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的...
springmvc上传文件到ftp demo,将mmall.properties里面的ftp内容修改为自己的启动就行,建议使用idea
springMvc 文件上传,springMvc 支持单文件和多文件上传,
SpringMvc上传本地图片保存数据库并实时显示
springMVC上传图片附件示例项目,多个图片上传,带选择图片后回显,带普通text类型文本域传值。有需要的尽管拿走。
SpringMVC文件上传案例
只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器。 一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析...
前面弄得我认得文档,现在发现csdn上面不能上传同样的格式,就直接把word文档上传,内容包含上传文件的各个部分,有详细注释,适合刚学springMVC的去观看
本资源是基于Springmvc的图片上传案例,并对上传的图片添加了生成缩略图的功能。