@[理想](记springboot上传文件的过程 前后端分离 shiro)
记springboot上传文件的过程 前后端分离 shiro
最近在用vue+springboot在前后端分离的模式下做项目,在遇到上传文件的时候发生了一些问题。
1.后端代码怎么写(如下)
public Object InboxInfoUpload(InboxInfo inboxInfo, @RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
if (file.isEmpty()) {
return "空文件";
}
// 获取文件名
String fileName = file.getOriginalFilename();
String suffixName = fileName.substring(fileName.lastIndexOf("."));
fileName = UUID.randomUUID() + suffixName;
String filePath = "//C://Users//lx//IdeaProjects//anonymous//src//main//resources//static//attach//";
File dest = new File(filePath+fileName);
// // 检测是否存在目录
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
注意:返回时尽量返回fileName。
2.shiro的问题
由于图片在static中存储,在shiro的内置过滤器中需要开放。

Map<String, String> filterMao = new LinkedHashMap<String, String>();
filterMao.put("/static/**", "anon");
filterMao.put("/attach/**","anon");
filterMao.put("/image/**","anon");
filterMao.put("/inboxinfo/add","anon");
filterMao.put("/inboxinfo/upload","anon");
filterMao.put("/login", "anon");
filterMao.put("/logout","user");
filterMao.put("/**", "authc");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMao);
// 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面
shiroFilterFactoryBean.setLoginUrl("/login");
// 登录成功后要跳转的链接
shiroFilterFactoryBean.setSuccessUrl("/index");
return shiroFilterFactoryBean;
}
特别需要注意的是:内置过滤器不仅仅要开放static,还要开放static下面的其他文件夹才可以。
3.关于热部署的问题
静态资源修改后需要重新启动项目才可以生效,这里记录一个不需要重启的办法。

然后打开file→settings→Compiler→勾选红圈内容→Apply

然后快捷键:“Shift+Ctrl+Alt+/”,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running”


SpringBoot前后端分离文件上传与Shiro配置详解
本文详细记录了使用Vue和SpringBoot进行前后端分离项目时,实现文件上传的步骤,包括后端接收文件的Java代码示例。同时,针对Shiro的权限过滤器配置进行了说明,特别指出需要放开对静态资源和特定API的匿名访问。此外,还分享了一个无需重启即可实现热部署的方法,以提高开发效率。
6万+





