`

SpringMVC上传问题(resin下无法上传)

阅读更多

找到问题了。原来是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文件上传,多文件上传实例

    在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...

    springMVC 上传文件方式

    springMVC 上传文件方式springMVC 上传文件方式springMVC 上传文件方式

    springmvc带进度条上传源码

    - 使用Ajax进行异步文件上传,使前端能够在不刷新页面的情况下与后端交互。 - 在Ajax请求的回调函数中处理进度更新,如使用`XMLHttpRequest`对象的`onprogress`事件。 6. **返回进度信息**: - 后端接收到文件...

    springmvc上传文件controller,vue

    在Spring MVC框架中,文件上传是一项常见的功能,用于接收客户端发送的文件数据。Vue.js作为一个前端框架,可以很好地与Spring MVC结合,实现用户界面的交互和文件上传的处理。在这个项目中,我们将深入探讨如何使用...

    springmvc上传jar包

    `springmvc上传jar包`这个主题主要关注如何在Spring MVC应用中实现文件上传,特别是使用`CommonsMultipartResolver`作为处理多部分请求的解析器。下面将详细讨论相关知识点。 首先,Spring MVC是Spring框架的一部分...

    SpringMVC上传文件 SSH上传文件

    接下来,我们转向SSH框架下的文件上传与下载。SSH是一种经典的Java Web开发组合,其中Struts2负责视图和控制层,Hibernate处理持久层,Spring提供整体的依赖注入和事务管理。 1. **Struts2文件上传**:Struts2有一...

    Springmvc上传文件.docx

    SpringMVC 上传文件详解 SpringMVC 框架中上传文件是非常常见的操作,今天我们来详细讲解 SpringMVC 中的文件上传过程。 文件上传的必要条件 在 SpringMVC 中,文件上传需要满足以下几个条件: 1. 表单的 ...

    springMVC图片上传示例

    在这个"springMVC图片上传示例"项目中,我们将深入探讨如何在SpringMVC环境中实现图片附件的上传功能,包括多图上传、图片预览及文本域传值。 一、SpringMVC概述 SpringMVC是Spring框架的一部分,它遵循模型-视图-...

    SpringMVC文件上传Demo代码

    在SpringMVC中实现文件上传是一项常见的任务,它允许用户通过表单将本地文件发送到服务器进行存储或处理。这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们...

    尚硅谷SpringMVC上传文件

    在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的...

    SpringMVC+Ajax异步文件上传

    而`Ajax`技术则使得页面可以在不刷新的情况下与服务器进行交互,实现异步上传,极大地提升了用户体验。在本教程中,我们将探讨如何结合`SpringMVC`和`Ajax`来实现异步文件上传,并讨论短视频背景以及`a`标签绑定文件...

    IDEA SpringMVC 实现文件的上传下载

    在SpringMVC框架中,实现文件的上传与下载是常见的需求。IntelliJ IDEA作为流行的Java开发集成环境,为开发者提供了高效便捷的开发体验。在这个项目中,我们使用IDEA来构建一个基于SpringMVC的系统,实现了文件的...

    springMVC上传文件.zip_springmvc_上传文件_文件上传

    文件上传过程中可能会出现各种问题,例如文件过大、文件类型不受支持等。因此,需要捕获并处理`MultipartException`及其子类,向用户返回错误信息。 7. **配置** 在SpringMVC的配置中,需要启用MultipartResolver...

    SpringMVC+Ajax异步上传图片并显示(源码)

    在本文中,我们将深入探讨如何使用SpringMVC和Ajax实现异步上传图片并实时显示的功能。这个技术组合常用于Web应用开发中,提供流畅的用户体验,避免页面刷新带来的不便。 首先,SpringMVC是Spring框架的一部分,专...

    springMvc单文件多文件上传

    springMvc 文件上传,springMvc 支持单文件和多文件上传,

    基于Springmvc的上传图片并生成缩略图

    在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...

    springMVC上传下载样例

    只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器。 一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析...

    SpringMVC上传文件的四种方法

    在处理文件时,还需要注意文件大小限制、异常处理、安全性(防止恶意文件上传)等问题。在`Spirng-MVC-Photo`项目中,可能包含了示例代码和更详细的实现细节,你可以查阅这些文件来深入了解和实践。

    springMVC文件上传demo(亲测有效)

    SpringMVC是Spring框架的一个模块,专门用于处理Web应用程序中的HTTP请求和响应。在实际开发中,文件上传功能是常见的需求,例如...通过学习和实践这个Demo,开发者可以快速掌握SpringMVC环境下文件上传的实现方式。

    springmvc+ajax上传例子

    本教程将深入探讨如何结合SpringMVC和Ajax实现文件上传功能。 首先,SpringMVC是Spring框架的一部分,它是一个强大的模型-视图-控制器(MVC)框架,用于开发Java Web应用程序。它提供了对HTTP请求的处理、模型数据...

Global site tag (gtag.js) - Google Analytics