记springboot上传文件的过程 前后端分离 shiro
程序员文章站
2022-03-10 17:58:13
@[理想](记springboot上传文件的过程 前后端分离 shiro)记springboot上传文件的过程 前后端分离 shiro最近在用vue+springboot在前后端分离的模式下做项目,在遇到上传文件的时候发生了一些问题。1.后端代码怎么写(如下)public Object InboxInfoUpload(InboxInfo inboxInfo, @RequestParam("file") MultipartFile file, HttpServletRequest request) t...
@[理想](记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”
本文地址:https://blog.csdn.net/Javafor1997/article/details/110876648
上一篇: PHP如何判断是否为AJAX请求?
下一篇: spring mvc代码示例