`

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的论坛

    运行resin目录下的httpd.exe文件即可(请确保resin解压在D盘根目录下面,由于配置的时候是写死的引用D:\resin-pro-3.1.12\lib\aspectjweaver-1.7.0.jar)共有3个解压缩文件,由于csdn限制只能分解成多个文件上传,请...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...

    车库和车库 CFD 模型 CFD 分析可用于分析模型

    车库和车库 CFD 模型 CFD 分析可用于分析模型。

    henn-produktfolder-thermalmanagement-2024.pdf

    henn-produktfolder-thermalmanagement-2024

    39 Android源代码定时情景模式切换.zip

    39 Android源代码定时情景模式切换.zip

    基于单 神经 元PID控制器的四旋 翼 飞 行 器 航 迹控制.pdf

    基于单 神经 元PID控制器的四旋 翼 飞 行 器 航 迹控制.pdf

    西门子S7 200 Smart PLC与3台台达MS300变频器通讯程序

    内容概要:本文详细介绍了如何使用西门子S7-200 SMART PLC与三台台达MS300变频器进行Modbus RTU通讯的具体步骤和技术要点。首先,文章强调了正确的硬件连接方法,包括PLC与变频器之间的485总线连接以及终端电阻的设置。接着,深入讲解了变频器的关键参数配置,确保通讯稳定可靠。然后,展示了核心程序的设计思路,特别是轮询机制的应用,通过定时中断实现对三台变频器的状态监测和控制。此外,还提供了触摸屏的配置方法,使操作更加直观便捷。最后,分享了一些常见的调试经验和避坑指南,帮助解决实际应用中可能遇到的问题。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC与变频器通讯感兴趣的读者。 使用场景及目标:适用于需要将多台变频器集成到PLC控制系统中的工程项目,旨在提高系统的稳定性和可靠性,同时降低维护成本。 其他说明:文中提供的代码片段和配置建议均基于作者的实际经验,具有较高的实用价值。对于初学者来说,建议先理解基本概念再逐步深入实践。

    7天打造Rust命令行工具:Clap与StructOpt深度对比.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    互联网大厂裁员背后的经济规律与增长天花板.mp4

    互联网大厂裁员背后的经济规律与增长天花板.mp4

    2025年交换原理与技术.zip

    2025年交换原理与技术.zip

    基于PLC的智能农业温室大棚控制系统中电气控制设计与图纸详解 其中包括梯形图程序、接线图及io分配等内容,带您领略组态画面的精彩展示。

    内容概要:本文详细介绍了基于PLC(可编程逻辑控制器)的智能农业温室大棚控制系统的各个方面。主要内容涵盖IO分配、梯形图程序编写、接线图绘制和组态画面设计。通过合理的IO分配,PLC能够准确获取环境数据并控制相关设备;梯形图程序实现了对温度、湿度等环境因素的自动化控制;接线图确保了硬件连接的准确性;组态画面提供了用户友好的操作界面。此外,还分享了一些实际应用场景和技术细节,如温度控制梯形图实战、接线冷知识、组态画面设计技巧以及调试现场的经验。 适合人群:从事农业自动化、工业控制领域的工程师和技术人员,特别是对PLC编程和智能农业感兴趣的读者。 使用场景及目标:适用于希望提高农业生产效率和智能化水平的农场主和农业企业。通过引入PLC控制系统,可以实现对温室环境的精准控制,减少人工干预,提升作物产量和质量。 其他说明:文中不仅提供了理论知识,还包括了许多实践经验,帮助读者更好地理解和应用PLC技术于智能农业中。

    基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档(毕业设计&课程设计&项目开发)

    基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档

    三菱MCGS组态皮带运输机控制系统:传送带四皮带及梯形图原理详解

    内容概要:本文详细介绍了基于三菱FX3U PLC和MCGS组态软件构建的四皮带运输机控制系统。首先阐述了系统的IO分配规则,强调了关键输入输出信号的选择依据及其重要性。接着深入解析了梯形图编程技巧,展示了如何通过定时器、比较器等指令实现皮带的顺序启动和速度同步控制。随后探讨了MCGS组态界面的设计,包括动态皮带模拟、报警提示以及历史数据记录等功能。最后分享了一些常见故障处理经验和系统优化方法,如合理的接线方式、滤波处理和联锁逻辑设计。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于需要设计和维护复杂皮带传输系统的工厂环境,旨在提高生产效率并确保设备安全可靠运行。 其他说明:文中提供了大量实际案例和调试经验,有助于读者更好地理解和掌握相关技术和最佳实践。

    面板数据-中国各银行流动性创造(2012-2023年).xlsx

    详细介绍及样例数据:https://blog.csdn.net/T0620514/article/details/147722861

    Go语言设计模式:单例与工厂模式的并发安全实现.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!

    基于NB-IoT的智能渔业养殖综合控制系统设计.pdf

    基于NB-IoT的智能渔业养殖综合控制系统设计.pdf

    基于MCGS与PLC技术的饮料灌装生产流水线智能控制解决方案:梯形图程序、接线图与组态画面全解析

    内容概要:本文详细介绍了利用MCGS通用监控系统和西门子S7-300 PLC实现饮料灌装生产流水线的自动化控制方法。首先阐述了IO分配的具体规则,明确各输入输出端口的功能及其所连接的外部设备;接着展示了梯形图程序的设计思路,解释了启动停止控制、传送带控制和灌装控制三个关键环节的工作流程;然后描述了接线图原理图的内容,说明了PLC与外部设备间的物理连接方式;最后讲解了MCGS组态画面的应用,强调了其在人机交互方面的作用。通过这些内容,全面揭示了如何构建一套稳定高效的饮料灌装生产系统。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程及MCGS组态有一定了解的专业人士。 使用场景及目标:适用于需要优化现有饮料灌装生产线的企业,旨在提高生产效率、降低人工成本的同时保证产品质量的一致性和稳定性。通过对文中介绍的技术手段的学习和应用,可以更好地理解和掌握现代工业自动化控制系统的构建方法。 其他说明:文中不仅提供了理论性的指导,还有具体的实例分析,如针对可能出现的问题提出解决方案,使得读者能够在实践中灵活运用所学知识。此外,还提到了一些调试经验和技巧,有助于解决实际工作中遇到的各种挑战。

    Go语言GUI开发:Fyne框架跨平台应用实战.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!

    基于Unet神经网络架构的皮肤病图像分割系统,利用PyTorch实现的高效自动化诊断工具

    内容概要:本文详细介绍了使用PyTorch实现UNet架构进行皮肤病分割的方法和技术要点。首先讨论了数据准备,包括图像尺寸统一、数据增强以及归一化处理。接着深入探讨了UNet模型的具体实现,包括双卷积块、跳跃连接、上采样和下采样的设计。文中还特别强调了损失函数的选择,推荐使用Dice Loss来应对小目标分割问题,并提出了混合损失函数以提高模型稳定性。此外,文章还涉及了训练过程中的一些注意事项,如内存优化、类别不平衡处理以及后处理方法,如形态学开运算和阈值处理。最终,该系统在ISIC2018数据集上达到了约89%的Dice系数。 适合人群:具备一定深度学习基础的研究人员和开发者,尤其是对医学影像处理感兴趣的从业者。 使用场景及目标:适用于需要精确分割皮肤病灶的应用场景,如辅助诊断工具的开发。主要目标是提高皮肤病灶分割的准确性,减少人工标注的工作量并提升诊断效率。 其他说明:文章提供了详细的代码片段和实践经验分享,帮助读者更好地理解和应用UNet模型。同时,作者指出实际部署时需要注意模型对毛发等干扰因素的敏感性,并提出了一些改进措施。

    实验室智能监控系统的实现.pdf

    实验室智能监控系统的实现.pdf

Global site tag (gtag.js) - Google Analytics