springmvc + form:form 上传文件配置。

前几天写了springmvc form 表单,今天在form的基础上,加 上传文件配置。

需要在,springmvc-config.xml中进行配置上传文件。

<!-- 上传文件配置 Configure the multipart resolver -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- one of the properties available; the maximum file size in bytes -->
		<property name="defaultEncoding" value="UTF-8" />
		<property name="maxUploadSize" value="209715200" />
		<!-- 20M -->
		<!-- 要在WebContent下建立一个upload文件夹 <property name="uploadTempDir" value="upload"/> -->
	</bean>

在参数类中,加  

private File txtFile = null;

并加上get.set 方法。

jsp 的form中,

<form:input type="file" path="txtFile"/>

后天controller就可以获取File对象了。

如果获取的 文件 名称乱码,则在web.xml中进行配置 编码Filter。

http://blog.csdn.net/u012246342/article/details/52190910

遇到一个BUG,

原因是,在参数的form中, 最开始并不是用File,而是用 import org.springframework.web.multipart.commons.CommonsMultipartFile;

的  CommonsMultipartFile,所以报错如下:

严重: Servlet.service() for servlet springmvc threw exception
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'textLoginForm' on field 'txtFile': rejected value [Editorial_流程任务库_委托创作合同审核.xlsx]; codes [typeMismatch.textLoginForm.txtFile,typeMismatch.txtFile,typeMismatch.org.springframework.web.multipart.commons.CommonsMultipartFile,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [textLoginForm.txtFile,txtFile]; arguments []; default message [txtFile]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile' for property 'txtFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.commons.CommonsMultipartFile] for property 'txtFile': no matching editors or conversion strategy found]
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:818)
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:367)
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:612)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503)
	at java.lang.Thread.run(Unknown Source)

类型错误,org.springframework.validation.BindException,类型转换错误。

时间: 2024-09-15 22:05:11

springmvc + form:form 上传文件配置。的相关文章

dojo上传文件-dojo.form.uploader上传文件,后台要怎么获得文件流

问题描述 dojo.form.uploader上传文件,后台要怎么获得文件流 如题,后台要怎么获得文件流.普通的form表单提交只要中加个name ,后端代码只要写个和name相同的File类型参数接收就好了.但是dojo的获取不到.我不会dojo,js也不怎么写.知道的求告知,感激不尽

springMVC结合AjaxForm上传文件_javascript技巧

最近在项目中需要上传文件文件,之前一直都是form提交的,尝试了一下AjaxForm,感觉还比较好用,写篇随笔mark下,供以后使用.准备工作:下载jquery-form.js 相关jar: commons-fileupload-1.1.1.jar commons-io-1.3.2.jar  在spring-servlet.xml进行multipartResolver配置: <bean id="multipartResolver" class="org.springfr

CKEditor+CKFinder+php上传文件配置方法

新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder.这里主要记录CKFinder上传的一些参数配置,能够成功上传文件,自定义上传文件目录,按日期+随机字符重命名文件. 1.下载CKFinder. 下载CKFinder,解压跟CKEditor放同一目录,下载地址:http://ckfinder.com/ 2.开启上传功能. 打开ckfinder\config.php文件,找到函数CheckAuthentication(),大约在21行,将最后一行return

Apache 2.3.6以上的版本上传文件500错误问题

我先测试一个1K的图片文件是可以上传成功的,然后我再上传一个1MB的文件提示错误500了, 现在找到apache 配置文件Apache2confhttpd.conf,然后搜索MaxRequestLen 这里我们就可以进行修改了 在这个文件里增加下面的参数设置即可.  代码如下 复制代码 MaxRequestLen 10240000 注意上面是一KB为单位了 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件 , apac

ajax-不使用form表单springmvc如何上传文件

问题描述 不使用form表单springmvc如何上传文件 项目中需要在之前哥们的代码中加上一个文件上传功能,但是之前哥们写的jsp中使用的div里嵌套的table,并没有使用form表单,提交使用的是ajax,将页面的数据转成json提交到后台的. 我如何在他的基础上将上传的文件传到后台呀?怎么接收,还是用他这个提交按钮?可以实现吗? 解决方案 这里用到HTML 标签的 enctype 属性. enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 默认地,表单数据会编码为 "

SpringMVC文件上传的配置实例详解_java

记述一下步骤以备查. 准备工作: 需要把Jakarta Commons FileUpload及Jakarta Commons io的包放lib里. 我这边的包是: commons-fileupload-1.1.1.jar commons-io-1.3.2.jar 然后在spring-servlet.xml进行multipartResolver配置,不配置好上传会不好用. <bean id="multipartResolver" class="org.springfram

jquery.form ajaxt-jquery.form 上传文件异常errorThrown server abort

问题描述 jquery.form 上传文件异常errorThrown server abort var updateTh = function (){ var options={ url:'${ctx}/Controller/importData', type:'post', dataType :"json", success:function(data){ alert(data.respCode); }, error:function (XMLHttpRequest,textStat

form表单上传文件

  表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码. 默认情况,enctype的编码格式是application/x-www-form-urlencoded,不能用于文件上传: 只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.   利用表单上传文件的例子: <form id="form1" runat="server" enctype="m

jQuery.form插件的使用及跨域异步上传文件_jquery

先说明白 这个跨域异步上传功能我们借助了Jquery.form插件,它在异步表单方面很有成效,而跨域我们会在HTTP响应头上添加 access-control-allow-method,当然这个头标记只有IE10,火狐和谷歌上支持,对于IE10以下的浏览器来说,我们就不能用这种方式了,我们需要换个思路去干这事,让服务端去重写向我们的客户端,由客户端(与文件上传页面在同域下)来返回相关数据即可. 再做事 1 Jquery.form的使用 <form method="post" ac