Shiro上传文件获取'file'文件失败

问题描述 投票:0回答:0

先贴上我的控制器代码

   @PostMapping("/upload/single")
    public ResponseResult uploadSingleFile(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jsonObject = new JSONObject();
        // change to MultipartRequest
        StandardServletMultipartResolver standardServletMultipartResolver = new StandardServletMultipartResolver();
        MultipartHttpServletRequest multipartHttpServletRequest = standardServletMultipartResolver.resolveMultipart(request);
        try {
            // get filename
            MultipartFile file = multipartHttpServletRequest.getFile("file");
            String originalFilename = file.getOriginalFilename();
            // change file
            File dest = new File(tempPrePath + File.separator + originalFilename);
            if (!dest.exists()) {
                dest.mkdirs();
            }
            file.transferTo(dest);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        jsonObject.put("msg", "success");
        return new ResponseResult(ResultCode.SUCCESS);
    }

和 apifox 请求: apifox image 和错误:

文件是空点

那么如何解决这个问题

1、我尝试添加过滤器但效果不佳:

        if(request instanceof HttpServletRequest) {
            if (((HttpServletRequest) request).getMethod().toUpperCase().equals(RequestMethod.OPTIONS.name())) {
                return true;
            }
      }

判断是否是跨域请求 2、我尝试在shiro中设置匿名访问的路径

@Bean(name = "shiroFilterFactoryBean")
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager defaultWebSecurityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
//        给filter设置安全管理器
        shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);
//        添加自定义过滤器
        Map<String, Filter> filterMap = new HashMap<String, Filter>();
        filterMap.put("jwt", new JwtFilter());
        shiroFilterFactoryBean.setFilters(filterMap);

//        配置系统受限资源
        Map<String, String> map = new HashMap<String, String>();
        map.put("/api/faculty/login", "anon");
        map.put("/api/faculty/register", "anon");
        map.put("/api/verify/**", "anon");
        map.put("/test/**", "anon");
        map.put("/common/file/**", "anon");
        map.put("/**", "jwt");
        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
        return shiroFilterFactoryBean;
    }
java file-upload shiro
© www.soinside.com 2019 - 2024. All rights reserved.