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 @   风去影无踪  阅读(783)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示