Spring提供的API实现文件上传
Spring为我们提供了文件上传接口MultipartRequest及其实现类StandardMultipartFile
StandardMultipartFile是StandardMultipartHttpServletRequest中的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实现文件上传的更多相关文章
- Resumable.js – 基于 HTML5 File API 的文件上传
Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...
- Spring Boot 2.X 实现文件上传(三)
使用 SpringBoot 项目完成单个.多个文件的上传处理,并将上传的文件保存到指定目录下. 代码演示案例 所有的 HTML 页面文件 index.html <!DOCTYPE html> ...
- 从零开始的Spring Boot(3、Spring Boot静态资源和文件上传)
Spring Boot静态资源和文件上传 写在前面 从零开始的Spring Boot(2.在Spring Boot中整合Servlet.Filter.Listener的方式) https://www. ...
- Spring MVC4使用Servlet3 MultiPartConfigElement文件上传实例
在这篇文章中,我们将使用Spring MultipartResolver 实现 StandardServletMultipartResolver在Servlet3环境中实现单点和多文件上传功能.Spr ...
- 使用 JavaScript File API 实现文件上传
概述 以往对于基于浏览器的应用而言,访问本地文件都是一件头疼的事情.虽然伴随着 Web 2.0 应用技术的不断发展,JavaScript 正在扮演越来越重要的角色,但是出于安全性的考虑,JavaScr ...
- Spring Boot会员管理系统——处理文件上传
温馨提示 Spring Boot会员管理系统的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎.所以,可以学习下这些知识.当然,直接入门的话使 ...
- Spring中使用StandardServletMultipartResolver进行文件上传
从Spring3.1开始,Spring提供了两个MultipartResolver的实现用于处理multipart请求,分别是:CommonsMultipartResolver和StandardSer ...
- 基于spring 3.0mvc 框架的文件上传实现
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框 ...
- Spring(七)SpringMVC的文件上传
1-SpringMVC的请求-文件上传-客户端表单实现(应用) 表单项type="file" 表单的提交方式是post 表单的enctype属性是多部分表单形式,及enctype= ...
随机推荐
- 127_Power Pivot&Power BI DAX计算订单商品在库时间(延伸订单仓储费用)
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前面已经写过一个先进先出的库龄案例,在业务发生又有这样一个需求:先进先出前提,需要按照订单计算每个商品在库时间, ...
- R-CNN学习笔记
R-CNN学习笔记 step1:总览 步骤: 输入图片 先挑选大约2000个感兴趣区域(ROI)使用select search方法:[在输入的图像中寻找blobby regions(可能相同纹理,颜色 ...
- Java虚拟机启动过程解析
一.序言 当我们在编写Java应用的时候,很少会注意Java程序是如何被运行的,如何被操作系统管理和调度的.带着好奇心,探索一下Java虚拟机启动过程. 1.素材准备 从Java源代码.Java字节码 ...
- GitHub 简介
用详细的图文对GitHub进行简单的介绍. git是一个版本控制工具,github是一个用git做版本控制的项目托管平台. 主页介绍: overview:总览.相当于个人主页. repositorie ...
- Redis - 持久化 AOF 和 RDB
Redis - 持久化 AOF 和 RDB AOF AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. AOF 文件中的命令全部以 Redis 协议的格 ...
- Eureka服务下线太慢,电话被告警打爆了
某年某月的某一天,就像一张破碎的脸... 错了,重来. 某天,忽然发现大量的告警,经过多番调查研究考察(此处省略3000字),发现是由于 Eureka 服务下线太慢,而仍然有大量的请求打进来导致的报错 ...
- 蓝牙、WiFi、ZigBee三大无线通信技术协议模块哪一个是最好的?
曾经,在2015年极客公园创新大会上,小米首次在非官方平台发布了新款产品小米智能家庭套装.自此,Zigbee便常出现在大众视野中. 如今,小米在IoT物联网应用开发者平台上明确说明,不再推广Zigbe ...
- LVGL库入门教程01-移植到STM32(触摸屏)
LVGL库移植STM32 LVGL库简介 LVGL(Light and Versatile Graphics Library)是一个免费.开源的嵌入式图形库,可以创建丰富.美观的界面,具有许多可以自定 ...
- javaEE-IDEA创建项目-使用Mybatis
新建项目 点Next之后给项目命名 创建如下文件夹以及文件 修改pom.xml, 加入 <dependencies> <!-- junit单元测试 --> <depend ...
- 使用c++爬取股市数据,获取最新行情
最近自己动手写个小软件(界面原生态,还没来得及加样式哈).每天看看潜力股懒人做法,不介意推荐.资源有限,只能观察一下低价股,分析一下运动规律,什么时候拉升,惯性如何 主要功能:读取网络数据:保存本地数 ...