Spring提供的API实现文件上传

Spring为我们提供了文件上传接口MultipartRequest及其实现类StandardMultipartFile
StandardMultipartFileStandardMultipartHttpServletRequest中的private访问级别内部类。

  • MultipartRequest的使用
    场景一:上传单个文件或多个文件,不传递参数
    /**
     * @RequestParam("file") 可以省略
     * @param file
     **/
    @RequestMapping("/")
    public void test1(@RequestParam("file") MultipartFile file){
        log.info("文件名:"+file.getOriginalFilename());
    }

    @RequestMapping("/")
    public void test1(@RequestParam("files") MultipartFile[] file){
        log.info("文件名:"+file[0].getOriginalFilename());
    }

场景二:上传单个文件或多个文件,前端传递参数

    /**
     * 使用Map接收参数,@RequestParam必须
     * @param file
     * @param map
     */
    @RequestMapping("/")
    public void test1(@RequestParam("file") MultipartFile file,@RequestParam Map<String, Object> map){
        log.info("文件名:"+file.getOriginalFilename());
        log.info("姓名:"+map.get("name"));
        log.info("年龄:"+map.get("age"));
    }

    /**
     * request 前端使用form-data格式传递,所以可以使用request.getParameter获取参数
     * @param file
     * @param request
     */
    @RequestMapping("/")
    public void test1(@RequestParam("file") MultipartFile file,HttpServletRequest request){
        log.info("文件名:"+file.getOriginalFilename());
        log.info("姓名:"+request.getParameter("name"));
        log.info("年龄:"+request.getParameter("age"));
    }

    /**
     * 使用对应的参数实体类接收,如User
     * @param file
     * @param user
     */
    @RequestMapping("/")
    public void test1(@RequestParam("file") MultipartFile file,User user){
        log.info("文件名:"+file.getOriginalFilename());
        log.info("姓名:"+user.getName());
        log.info("年龄:"+user.getAge());
    }
  • StandardMultipartHttpServletRequest的使用
    @RequestMapping("/")
    public void test1(HttpServletRequest request){
        if(request instanceof StandardMultipartHttpServletRequest){
            StandardMultipartHttpServletRequest servletRequest= (StandardMultipartHttpServletRequest) request;
            //获取前端传入的参数
            Map<String, String[]> paramMap=servletRequest.getParameterMap();
            //获取上传的文件
            Map<String, MultipartFile> fileMap = servletRequest.getFileMap();
        }
    }
posted @ 2022-08-09 15:00  风去影无踪  阅读(758)  评论(0编辑  收藏  举报