本篇文章给大家带来的内容是关于spring mvc处理multipart/form-data的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
multipart/form-data
multipart/form-data 为表单的mime编码属性之一,共有三个值
① application/x-www-form-urlencoded
② multipart/form-data
③ text/plain
①为html表单默认传输编码类型
②是表单上传的非文本的内容,传递的是文件数据,设置该属性再配合post请求方式从而实现文件上传
③是传输为纯文本的意思,在发邮件时要设置这种编码,拿text/plain和text/html做比较,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上
上述所提到的mime,它的英文全称是multipurpose internet mail extensions 多功能internet 邮件扩充服务,它是一种多用途网际邮件扩充协议。通过mime,浏览器的再请求,会告诉服务器接收的数据是什么类型.
spring mvc 处理 multipart/form-data
两种实现方式:
1、commonsmultipartresolver : 依赖于apache
2、standardservletmultipartresolver : 依赖于servlet 3.0 ,springboot默认支持该方式
一、配置解析器
1、commonsmultipartresolver 的配置
弊端:无法设置请求整体的最大容量
(1)声明bean和配置上传参数:
<bean id="multipartresolver" class="org.springframework.web.multipart.commons.commonsmultipartresolver"> <property name="uploadtempdir" value="/temp"/><!--设置上传目录/temp --> <property name="maxuploadsize" value="2097152"/> <!--最大文件容量设置为2m--> <property name="maxinmemorysize" value="0"/>· <!--最大的内存大小设置为0,超过0就写入磁盘--> </bean>
2、standardservletmultipartresolver 的配置
(1)声明bean:
<bean id="multipartresolver" class="org.springframework.web.multipart.support.standardservletmultipartresolver”>
@bean(name = "multipartresolver")public standardservletmultipartresolver getstandardservletmultipartresolver(){ return new standardservletmultipartresolver(); }
(2) 配置上传参数
web.xml 配置
<servlet> <servlet-name>dispatcherservlet</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:applicationcontext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <multipart-config> <!--上传到/temp 目录--> <location>/temp/upload</location> <!--文件大小为2m--> <max-file-size>2097152</max-file-size> <!--整个请求不超过4m--> <max-request-size>4194304</max-request-size> <!--大于0m的所有文件都要写入磁盘--> <file-size-threshold>0</file-size-threshold> </multipart-config> </servlet> <servlet-mapping> <servlet-name>dispatcherservlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
配置类中配置
<form action="/save" method="post" enctype="multipart/form-data"> <input type="file" name="pic"> <input type="submit"></form>
二、spring mvc 处理
1、表单:
<form action="/save" method="post" enctype="multipart/form-data"> <input type="file" name="pic"> <input type="submit"> </form>
2、mvc接收:
@requestmapping(value = "/save",method = requestmethod.post) public string gethome(multipartfile pic) throws ioexception { files.copy(pic.getinputstream(), paths.get(servletcontext.getrealpath("/temp"),pic.getoriginalfilename)); return null; }
以上就是spring mvc处理multipart/form-data的方法介绍(代码示例)的详细内容。