使用spring上传失败,找不到临时文件.tmp' does not exist

来源:互联网 发布:拿破仑 狮子 知乎 编辑:程序博客网 时间:2024/06/03 16:45

错误如下:

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

0 0