先贴上我的控制器代码
@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);
}
文件是空点
那么如何解决这个问题
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;
}