错误如下:
java.io.FileNotFoundException: F:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\HDFSWEB\upload_bb75deb0_8915_42db_8dd0_ea16edd74233_00000000.tmp (系统找不到指定的文件。) java.io.FileInputStream.open0(Native Method) java.io.FileInputStream.open(Unknown Source) java.io.FileInputStream.<init>(Unknown Source) com.company.serviceImpl.hdfsServiceImpl.createFile(hdfsServiceImpl.java:100) com.company.controller.hdfsController.upLoad(hdfsController.java:92) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
最开始认为找不到指定文件是代码出错,后面测试后发现不是这个错误,然后在不经意的时候上传了一个大于3MB的文件,发现成功。
于是找到错误原因,是spring配置文件出错。
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 文件大小最大值 -->
<property name="maxUploadSize" value="10485760000" />
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="40960" />
</bean>
这里的maxInMemorySIze 是文件上传的时候写到内存中的最大值,默认是10240字节,如果这里写大了,那么小于这个参数的文件则不会创建临时文件。
最后改成了 <property name="maxInMemorySize" value="1" />后正常
原文连接:http://blog.csdn.net/hanger_liu/article/details/51970784