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();
}
}

Spring提供的API实现文件上传的更多相关文章

  1. Resumable.js – 基于 HTML5 File API 的文件上传

    Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...

  2. Spring Boot 2.X 实现文件上传(三)

    使用 SpringBoot 项目完成单个.多个文件的上传处理,并将上传的文件保存到指定目录下. 代码演示案例 所有的 HTML 页面文件 index.html <!DOCTYPE html> ...

  3. 从零开始的Spring Boot(3、Spring Boot静态资源和文件上传)

    Spring Boot静态资源和文件上传 写在前面 从零开始的Spring Boot(2.在Spring Boot中整合Servlet.Filter.Listener的方式) https://www. ...

  4. Spring MVC4使用Servlet3 MultiPartConfigElement文件上传实例

    在这篇文章中,我们将使用Spring MultipartResolver 实现 StandardServletMultipartResolver在Servlet3环境中实现单点和多文件上传功能.Spr ...

  5. 使用 JavaScript File API 实现文件上传

    概述 以往对于基于浏览器的应用而言,访问本地文件都是一件头疼的事情.虽然伴随着 Web 2.0 应用技术的不断发展,JavaScript 正在扮演越来越重要的角色,但是出于安全性的考虑,JavaScr ...

  6. Spring Boot会员管理系统——处理文件上传

    温馨提示 Spring Boot会员管理系统的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎.所以,可以学习下这些知识.当然,直接入门的话使 ...

  7. Spring中使用StandardServletMultipartResolver进行文件上传

    从Spring3.1开始,Spring提供了两个MultipartResolver的实现用于处理multipart请求,分别是:CommonsMultipartResolver和StandardSer ...

  8. 基于spring 3.0mvc 框架的文件上传实现

    Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框 ...

  9. Spring(七)SpringMVC的文件上传

    1-SpringMVC的请求-文件上传-客户端表单实现(应用) 表单项type="file" 表单的提交方式是post 表单的enctype属性是多部分表单形式,及enctype= ...

随机推荐

  1. linux篇-Centos7构建NFS服务器和连接

    准备两台centos7虚拟机 192.168.30.133 192.168.30.129 2.192.168.30.1(服务端), 3查看rpc服务是否启动 4测试安装是否成功 5修改配置文件vi/e ...

  2. spring boot 在控制台打印banner

    转自 SpringBoot系列--花里胡哨的banner.txt - huanzi-qch - 博客园 (cnblogs.com) <div id="cnblogs_post_body ...

  3. Sentinel与OpenFeign 服务熔断那些事

    点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 在上一篇中,我们讲解了 Senti ...

  4. 浅谈Javascript单线程和事件循环

    单线程 Javascript 是单线程的,意味着不会有其他线程来竞争.为什么是单线程呢? 假设 Javascript 是多线程的,有两个线程,分别对同一个元素进行操作: function change ...

  5. CabloyJS实现了一款基于X6的工作流可视化编辑器

    介绍 文档演示:CMS审批工作流演示了如何通过JSON来直接创建一个工作流定义,通常用于为具体的业务数据生成预定义或内置审批工作流的场景 CabloyJS 4.8.0采用X6 图编辑引擎实现了一款工作 ...

  6. 【Java面试】请简单说一下你对受检异常和非受检异常的理解

    Hi,我是Mic 今天给大家分享一道阿里一面的面试题. 这道题目比较基础,但是确难倒了很多人. 关于"受检异常和非受检异常的理解" 我们来看看普通人和高手的回答. 普通人: 嗯.. ...

  7. 学了WEB缓冲投毒-挖SRC的时候咋利用

    学了WEB缓冲投毒-挖SRC的时候咋利用 昨天发了哥WEB缓存投毒的学习文章,但是除了理论和训练营并无实践,正巧翻到了一篇文章,感觉还有点关系,转的一个国外的老哥的文章. 微信公众号:小惜渗透,欢迎大 ...

  8. BUUCTF-小明的保险箱

    小明的保险箱 16进制打开可以发现存在一个RAR压缩包,压缩包里面应该就是flag文本 使用ARCHPR破解即可

  9. kali 漏洞扫描

    前言 漏洞扫描器是一种能够自动在计算机.信息系统.网络及应用软件中寻找和发现安全弱点的程序.它通过网络对目录系统进行探测,向目标系统发送数据,并将反馈数据与自带的漏洞特征库进行匹配,进而列举目标系统上 ...

  10. rhel6下eth1恢复eth0

    问题:VMware 虚拟机中,从模板克隆出来的虚拟机的网卡名都会变成为eth1,而程序或者脚本,默认网卡是eth0,这时需要将eth1改为eth0. 原因:/etc/udev/rules.d/70-p ...