spring mvc上传文件表单同时传值的问题

spring mvc上传文件表单同时传值的问题,第1张

当在上传表单中设置了 enctype="multipart/form-data" 时post传过去的字符串的值为null,会报 HTTP Status 400 - Required String parameter 'description' is not present 错误。

解决方案:

1、首先在pom.xml中添加

然后在applicationContext.xml中添加即可解决,这样的话spring会对表单的数据进行处理,就算使用了enctype="multipart/form-data"进行传值也能拿到数据

springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便。

我们通过下面的配置来使用springMVC文件上传功能。

<bean id="multipartResolver" class="com.youth.controller.fileupload.MultipartListenerResolver">

<!-- 设置上传文件的最大尺寸为10M -->

<property name="maxUploadSize" value="10240"/>

<property name="maxInMemorySize" value="4096"/>

<property name="defaultEncoding" value="UTF-8"/>

<property name="resolveLazily" value="true"/> </bean>

Controller层我们这样接收文件

@RequestMapping("fileUpload")public void fileUpload(@RequestParam("myFile") MultipartFile multipartFile) throws Exception{

String fileName = multipartFile.getOriginalFilename()

File f = createFile(fileName)

multipartFile.transferTo(f)

}

页面上记得指定enctype属性哦

<form method="post" enctype="multipart/form-data"></form>

如果你的springMVC配置是正确的,那么到此springMVC的文件上传功能已经可以用了。一切都很完美。

由于我们配置了maxUploadSize属性,那么如果我们的文件超过了10M会出现什么情况呢?

理论上系统会抛出MaxUploadSizeExceededException异常,那么如何处理呢?

springMVC异常处理的配置方式如下:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

<property name="exceptionMappings">

<props>

<prop key="java.lang.Exception">redirect:/error.jsp</prop>

<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">redirect:/MaxUploadSizeError.jsp</prop>

</props> </property><property name="defaultErrorView" value="redirect:/error.jsp"></property><property name="defaultStatusCode" value="500"></property></bean>

上面的配置作用是如果系统抛出MaxUploadSizeExceededException异常,系统跳转到MaxUploadSizeError.jsp页面给用户以提示。

如果是其他Exception异常,则跳转到error.jsp页面。

接下来我们测试一下上面的异常处理是否生效了。

在你的代码任意地方试着抛出NullPointException异常,发现页面的确能跳转到error.jsp,证明我们的异常处理是生效的。

然后我们上传一个10M以上的文件,我们发现后台控制台抛出了MaxUploadSizeExceededException异常,我们期待着页面转向到MaxUploadSizeError.jsp。

Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。

Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。

第一步:配置MultipartResolver

使用CommonsMultipartResolver配置一个MultipartResolver解析器:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"

p:defaultEncoding="UTF-8"

p:maxUploadSize="5242880"


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6041898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存