SpringMVC使用CommonsMultipartResolver上传文件
DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中MultipartResolver策略接口的实现,通过该接口的实现类来解析multipart请求中的内容。从Spring3.1开始,Spring内置了两个MultipartResolver的实现供我们选择:
StandardServletMultipartResolver 依赖于Servlet3.0对multipart请求的支持(始于Spring3.1)
CommonsMultipartResolver 使用Jakarta Commons FileUpload解析multipart请求
一般来说,StandardServletMultipartResolver将会是优先选择的方案,它使用了Servlet所提供的原生功能支持,并不需要依赖任何第三方组件。如果我们需要将应用部署到Servlet3.0之前的容器中,或者还没有使用Spring3.1或者更高的版本,那么可能就需要使用CommonsMultipartResolver了
(1)引入Jakarta相关jar包
1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version>1.4</version> 5 </dependency> 6 7 <dependency> 8 <groupId>commons-io</groupId> 9 <artifactId>commons-io</artifactId> 10 <version>2.6</version> 11 </dependency>
(2)将CommonsMultipartResolver添加到Spring容器中
1 @Bean 2 public MultipartResolver multipartResolver() throws IOException { 3 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); 4 multipartResolver.setUploadTempDir(new FileSystemResource("/tmp/coreqi/uploads")); 5 multipartResolver.setMaxUploadSize(2097152); 6 multipartResolver.setMaxInMemorySize(0); 7 return multipartResolver; 8 }
(3)编写上传文件的Form表单
将<form>标签的enctype设置为multipart/form-data,这会告诉浏览器以multipart数据的形式提交表单,而不是以表单数据的形式进行提交。
1 <!DOCTYPE html> 2 <html lang="en" xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>上传页面</title> 6 </head> 7 <body> 8 <form method="post" th:action="@{/file/upload}" enctype="multipart/form-data"> 9 描述:<input type="text" name="desc"/> 10 文件:<input type="file" name="file" accept="image/jpeg,image/png,image/gif"/> 11 <input type="submit" value="上传"/> 12 </form> 13 </body> 14 </html>
(4)编写上传的控制器
1 @PostMapping("/file/upload") 2 public String upload(@RequestParam String desc, @RequestParam MultipartFile file) throws IOException { 3 if(!file.isEmpty()){ 4 String filePath = "d:\\img\\"; 5 File fileDir = new File(filePath); 6 if(!fileDir.exists() && !fileDir.isDirectory()){ 7 fileDir.mkdir(); 8 } 9 file.transferTo(new File(filePath + file.getOriginalFilename())); 10 } 11 return "file/upload"; 12 }
转载于:https://www.cnblogs.com/fanqisoft/p/10261569.html
SpringMVC使用CommonsMultipartResolver上传文件相关推荐
- Spring CommonsMultipartResolver 上传文件
http://yanglei008.iteye.com/blog/246920 Spring CommonsMultipartResolver 上传文件 博客分类: spring SpringMVCJ ...
- java form 上传文件_java通过表单进行文件上传的几种方法
上传文件的分类: 无论什么方式上传文件,都要用post提交 方式一: 前端:表单方式上传文件 后端: 使用上传技术是apache中的Commons-fileupload.jar commons-io. ...
- ajax上传 java,javaWeb中使用ajax上传文件
javaWeb上传图片 上传文件所必要的两个jar包:commons-fileupload.jar.commons-io.jar. 核心代码: String withPath = req.getSer ...
- SpringMVC上传文件
首先自我介绍一下,我是王登高,下面是我的头像: 是不是很帅,我每天照镜子都感觉自己帅. 好了不扯这些没用的,我们进入正题:前两天,自己边学边做遇到的SpringMVC上传文件的问题,用户可以上传图片, ...
- SpringMVC上传文件配置
方式一:将multipartResolver中的属性分别单独配置(推荐) <!-- SpringMVC文件上传 --><bean id="multipartResolver ...
- SpringMVC 上传文件and过滤器
SpringMVC提供了一个MultipartResolver接口用来实现文件上传,并使用Commons FileUpload技术实现了一个该接口的实现类CommonsMultipartResolve ...
- SpringMVC实现PUT请求上传文件
在JQuery中,我们可以进行REST ful中delete和put的请求,但是在java EE标准中,默认只有在POST请求的时候,servlet 才会通过getparameter()方法取得请求体 ...
- SpringMVC上传文件的三种方式
/** 通过流的方式上传文件* @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象*/@Reques ...
- SpringMVC上传文件出现400 Bad Request错误
1.起因 写了上传文件代码,用postman测试一下报400 Dad Request. 2.原因 看了下资料了解到使用SpringMVC上传文件需要在form表单中添加enctype="mu ...
- form表单上传文件_SpringBoot中如何使用SpringMVC上传文件?
今天我们要说的这个话题很简单,不要问为啥,因为SpringBoot,哈哈.现在SpringBoot可以说人人都会用了,它的好处是显而易见的,大大的简化了配置,一起来看看吧. 我们分以下3种情况来谈这个 ...
最新文章
- myeclipse下拷贝的项目,tomcat下部署名称和导出为war包的名称默认值修改
- ASP.NET MVC Action Filters
- 注解默认继承_默认方法和多重继承
- 同时多次调用存储规程_本体技术视点 | 神奇的Merkle树是如何实现存储层优化的?...
- java编码gbk的不可_解决 java “错误:编码GBK 的不可映射字符”
- sql server死锁_如何使用扩展事件和SQL Server代理自动执行SQL Server死锁收集过程
- 炮姐ed计算机谱子,炮姐来了!《科学超电磁炮T》正式PV公开 1月开播_游侠网 Ali213.net...
- linux tar 打包.压缩.解压缩 命令说明
- 普林斯顿微积分读本(修订版)
- 现代心理与教育统计学 第一章
- stream从list实体类筛选出符合条件的单个实体类
- 办公室网络带宽叠加(有线和WiFi同时使用)
- 系统的延时任务和定时任务
- linux局域网即时通讯,基于身份的Linux下局域网即时通讯系统的研究与实现
- kubeadm更改配置
- 互联网测试必须要知道的App稳定性测试
- 【错误解决】SpringBoot邮件服务的一些错误及其解决方案
- 通过 Flowable-UI 来体验一把 Flowable 流程引擎
- 3com 4500交换机划分vlan
- Android开发艺术探索PDF版
热门文章
- PHP发微信消息必须开网吗,关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题...
- 9)Thymeleaf ⼯具类对象表达式
- Linux CentOS 7.2 安装 Tomcat 8 服务器
- 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_09.RequestMapping注解的属性
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_1 ioc的概念和作用
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_11_常用的函数式接口_Consumer接口练习...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_3_字符输出流_Writer类FileWriter类...
- docker安装jdk8
- Vue2.0 的漫长学习ing-2-1
- Web---演示Servlet的相关类、下载技术、线程问题、自定义404页面