欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记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的内置过滤器中需要开放。
记springboot上传文件的过程 前后端分离 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.关于热部署的问题

静态资源修改后需要重新启动项目才可以生效,这里记录一个不需要重启的办法。
记springboot上传文件的过程 前后端分离 shiro
然后打开file→settings→Compiler→勾选红圈内容→Apply
记springboot上传文件的过程 前后端分离 shiro
然后快捷键:“Shift+Ctrl+Alt+/”,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running”
记springboot上传文件的过程 前后端分离 shiro
记springboot上传文件的过程 前后端分离 shiro

本文地址:https://blog.csdn.net/Javafor1997/article/details/110876648