项目是springboot+shiro,前期做过上传功能,直接用发现报错:

MultipartHttpServletRequest params = (MultipartHttpServletRequest) request;

控制台报错信息:

java.lang.ClassCastException: org.apache.shiro.web.servlet.ShiroHttpServletRequest cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

断点调试发现问题:

解决办法:

ShiroHttpServletRequest shiroRequest = (ShiroHttpServletRequest) request;
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
MultipartHttpServletRequest multipartRequest = commonsMultipartResolver.resolveMultipart((HttpServletRequest) shiroRequest.getRequest());

可以正常获取参数:

String pageParam = multipartRequest.getParameter("pageParam");  // 页面的参数..
MultipartFile file = multipartRequest.getFile("filePath"); // 上传的文件id..

写到最后,新增按照原来的写法没问题,编辑保存却需要使用ShiroHttpServletRequest转换一次,前台人员说请求的写法都是一样的很是奇怪。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐