一,问题
同样是表单提交,而文件不是明文,是二进制数据,怎么可以上传呢,spring mvc到底做了什么呢,今天我们就来探讨下
二,解决方案
首先我要说的是spring mvc的核心控制器 DispachServlet,这个控制器主要是用来起调度作用,他里面默认就带了一个文件上传的视图解析器,叫 multipartResolver,而这个视图解析器Spring MVC又提供了一个默认的实现,叫 CommonMultipartResolver,说白了这个实现底层用的就是 common-fileupload,所以在你的WEB环境下就有了 common-fileupload的依赖。
那如果是我们手动来配置,如何配置呢?
第一步,首先在我们的核心控制器加载的上下文文件中,加上如下解析器
注意,这个解析器有如下四个属性可以设置,大家可以按需设置
defaultEncoding:表示请求的默认编码,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1
uploadTempDir:设置上传文件时的临时目录,默认是Servlet容器的临时目录
maxUploadSize:设置允许上传的最大文件大小,以字节为单位,-1表示没有限制
maxInMemorySize:设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240
第二步,在我们视图层,为表单设置 enctype="multipart/form-data"(必须这样设置)
第三步,就是我们的控制器Controller如何接收了,我们可以使用3.x的新特性,注解
时间: 2024-10-11 19:59:01