springmvc框架下Filter过滤器中过滤文件后 后续 controller为空的问题

开发过程中遇到过滤文件类型的问题,需要校验文件的头信息,,在过滤器中通过request获取文件流信息  但是后续的controller中的MultipartFile一直都是空的,网上的网友的方案使用了一堆比如 使用BodyReaderHttpServletRequestWrapper 封装 但是不好用,说一下我自己的解决方案。

直接上代码:一目了然

    @Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) request;String contentType = request.getContentType();if(null != contentType && contentType.contains("multipart/form-data")){//说明是文件上传
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();MultipartHttpServletRequest resolveMultipart = commonsMultipartResolver.resolveMultipart(req);        boolean b = true;Map<String, MultipartFile> fileMap = resolveMultipart.getFileMap();for (String key : fileMap.keySet()) {MultipartFile multipartFile = fileMap.get(key);InputStream is = multipartFile.getInputStream();//你的过滤逻辑b=false;}}}        if(b){chain.doFilter(resolveMultipart, response);}}else{chain.doFilter(request, response);}}

这样过滤以后,后续的controller中的MultipartFile就不为空了。搞定!!!

转载于:https://www.cnblogs.com/wgy-01/p/11442346.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js(Dom+Bom)第七天(1)

JavaScript BOM介绍 概念 BOM&#xff08;Browser Object Model&#xff09;即浏览器对象模型。 本质&#xff1a; 通过对象抽象浏览器中的一些功能 例如&#xff1a;&#xff08;刷新页面&#xff0c;alert,confirm,pormpt,跳转 ...&#xff09;BOM顶级对象 window对象是js中…

「十二省联考 2019」皮配——dp

题目 【题目描述】 #### 题目背景一年一度的综艺节目《中国好码农》又开始了。本季度&#xff0c;好码农由 Yazid、Zayid、小 R、大 R 四位梦想导师坐镇&#xff0c;他们都将组建自己的梦想战队&#xff0c;并率领队员向梦想发起冲击。 四位导师的**派系**不尽相同&#xff0c;…

收藏一个在线思维导图的制作网站

https://www.processon.com/ 转载于:https://www.cnblogs.com/132818Creator/p/11447077.html

js(Dom+Bom)第七天(2)

webAPI 01-动画封装 应用到的知识点 点击事件 给元素设置一个绝对定位 定时器(setInterval) 封装动画1的步骤: 让元素设置为绝定位设置元素的开始位置(从哪开始移动)设置元素的目标位置(移动到哪)设置元素每次移动的距离设置元素每次移动的时间间隔(越短越好) 封装动画1遇…

链表中环的入口结点

题目描述 给一个链表&#xff0c;若其中包含环&#xff0c;请找出该链表的环的入口结点&#xff0c;否则&#xff0c;输出null。 分析 第一步&#xff1a;确定一个链表中是否有环 我们可以用两个指针来解决&#xff0c;定义两个指针&#xff0c;同时从链表的头结点触发&#xf…

java 线程之线程状态

Thread 类中的线程状态&#xff1a; public enum State {NEW,//新建RUNNABLE,// 执行态BLOCKED, //等待锁&#xff08;在获取锁的池子里&#xff09;WAITING,//等待状态TIMED_WAITING,//定时等待TERMINATED; //终止 } 创建状态&#xff08;NEW&#xff09;&#xff1a;当一个线…

目标元素拖动

<div class"box"><div class"title">拖拽效果</div></div>* {margin: 0;padding: 0;}.box {width: 350px;height: 300px;border: 1px solid #ccc;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);cursor…

操作系统原理之内存管理(第四章第二部分)

一、基本分页存储管理方式 1、分⻚存储管理的基本原理&#xff1a; 页&#xff1a;将⼀个进程的逻辑地址空间分成若⼲个⼤⼩相等的⽚页框&#xff1a;将物理内存空间分成与⻚⼤⼩相同的若⼲个存储块分⻚存储&#xff1a;将进程中的若⼲⻚分别装⼊多个可以不相邻的⻚框中页内碎片…

C#代码总结02---使用泛型来获取Asp前台页面全部控件,并进行属性修改

该方法&#xff1a;主要用于对前台页面的不同类型&#xff08;TextBox、DropDownList、等&#xff09;或全部控件进行批量操作&#xff0c;用于批量修改其属性&#xff08;如&#xff0c;Text、Enable&#xff09;。 private void GetControlList<T>(ControlCollection c…

d3.js 教程 模仿echarts柱状图

由于最近工作不是很忙&#xff0c;隧由把之前的charts项目用d3.js重写的一下&#xff0c;其实d3.js文档很多&#xff0c;但是入门不是很难&#xff0c;可是想真的能做一个完成的&#xff0c;交互良好的图还是要下一番功夫的。今天在echarts找到了一个柱状图&#xff0c;如图。 …

简单的动画函数封装(2)

<div></div><!-- <span></span> --><button class"btn1">点击500</button><button class"btn2">点击800</button>div{width: 100px;height: 100px;background-color: red;position: absolute;top: …

【蔡勒公式 】根据给定的年月日求出对应星期几

蔡勒公式 蔡勒&#xff08;Zeller&#xff09;公式&#xff0c;是一个计算星期的公式&#xff0c;随便给一个日期&#xff0c;就能用这个公式推算出是星期几。时间复杂度&#xff1a;O(1)。具体的在红书P229有。 若要计算的日期是在1582年10月4日或之前&#xff0c;公式则为&am…

MFC的程序,不想显示窗口,任务栏里也不显示

在dialog的oninitdialog里设置如下属性&#xff0c;很简单&#xff0c;网上一些乱七八糟的做法&#xff0c;一行代码就能搞定啊 SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW); ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); 转载于:https://www.cnblog…

放大镜制作(2)—此方法比较容易理解

<div class"box" id"box"><!--左侧的盒子--><div class"left_img"><!--图片--><img src"images/small.jpg" class"aaa" alt"小图片"/><!--黄色小盒子--><div class"…

call / apply / bind

对于 call / apply / bind 来说&#xff0c;他们的首要目的是用于改变执行上下文的 this 指针。 call / apply 对 call / apply 的使用&#xff0c;一般都如下&#xff0c;用于改变执行环境的上下文。只是 call 接受的是一个一个的参数&#xff0c;而 apply 则是接受的是一个参…

js(Dom+Bom)第八天—Swiper(插件)

Swiper插件(库) 01-基本介绍 Swiper 是一款免费以及轻量级的移动设备触控滑块的js框架&#xff0c;使用硬件加速过渡&#xff08;如果该设备支持的话&#xff09;。主要使用于移动端的网站、移动web apps&#xff0c;native apps和hybrid apps。主要是为IOS而设计的&#xff…

第七节:EF Core调用SQL语句和存储过程

一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段。 B. 结果集中的列名必须与属性映射到的列名相匹配。 C. SQL查询不能包含关联数据 D. 除Select以为的其它SQL语句无法运行。 2.调用SQL语句的几种情况 A. 基本的原生SQL查询 B. 利用$内插语法进行传递 C. 原生…

没用的一些水货

1. 不递归的子函数加上inline会跑的很快。 2. 在稠密图中用dijkstra堆优化会导致跑的很慢。 3. 连着开几个数组的话&#xff0c;有可能越界了评测机却返回WA。 4. 如果你用的Dev-C&#xff0c;那么有的时候会出现一些莫名其妙的编译错误。请检查是否存在未关闭的代码生成的.exe…

js(Dom+Bom)第八天

JavaScript 移动端事件介绍 touch事件类型 移动设备上无法使用鼠标&#xff0c;当手指按下屏幕的时候会触发 click,mousedown,mouseup事件&#xff0c;但是在移动设备上有专门的事件&#xff1a; touch 备注&#xff1a; 在移动端touch事件需要通过事件监听的方式添加touchsta…

程序员计算器HEX、EDC、OCT等等的意思

binary 二进制 对应的是 BINoctal 八进制的 ---- OCThexadecimal 十六进制的 --- HEXdecimal 十进制的 -- DEC 转载于:https://www.cnblogs.com/132818Creator/p/11459984.html