大而爽 發表於 2019-6-6 15:17:00

SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

<div id="content_views" class="markdown_views prism-atom-one-dark">
            
            <svg xmlns="http://www.w3.org/2000/svg" style="display: none">
            <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path>
            </svg>
            <p></p><div class="toc"><h3>SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898……</h3><ul><ul><li>报错原因:</li><li>解决方法</li></ul></ul></div><p></p>
<pre class="prettyprint"><code class="prism language-javascript has-numbering">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>IOException<span class="token punctuation">:</span> java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>FileNotFoundException<span class="token punctuation">:</span> <span class="token operator">/</span>tmp<span class="token operator">/</span>tomcat<span class="token punctuation">.</span><span class="token number">5089835798184465073.8081</span><span class="token operator">/</span>work<span class="token operator">/</span>Tomcat<span class="token operator">/</span>localhost<span class="token operator">/</span><span class="token constant">ROOT</span><span class="token operator">/</span>www<span class="token operator">/</span>server<span class="token operator">/</span>apache<span class="token operator">-</span>tomcat<span class="token operator">-</span><span class="token number">8.5</span><span class="token number">.32</span><span class="token operator">/</span>webapps<span class="token operator">/</span>jxmstory<span class="token operator">/</span>uploadfile<span class="token operator">/</span><span class="token number">201811</span><span class="token operator">/</span><span class="token number">1541155647100.</span><span class="token function">jpg</span> <span class="token punctuation">(</span>No such file or directory<span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationPart<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>ApplicationPart<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">122</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>multipart<span class="token punctuation">.</span>support<span class="token punctuation">.</span>StandardMultipartHttpServletRequest$StandardMultipartFile<span class="token punctuation">.</span><span class="token function">transferTo</span><span class="token punctuation">(</span>StandardMultipartHttpServletRequest<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">255</span><span class="token punctuation">)</span>
        at com<span class="token punctuation">.</span>sh<span class="token punctuation">.</span>controller<span class="token punctuation">.</span>admin<span class="token punctuation">.</span>AttAchController<span class="token punctuation">.</span><span class="token function">upload</span><span class="token punctuation">(</span>AttAchController<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">226</span><span class="token punctuation">)</span>
        at com<span class="token punctuation">.</span>sh<span class="token punctuation">.</span>controller<span class="token punctuation">.</span>admin<span class="token punctuation">.</span>AttAchController$$FastClassBySpringCGLIB$$<span class="token number">15</span>ecb206<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span><span class="token operator">&lt;</span>generated<span class="token operator">&gt;</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>cglib<span class="token punctuation">.</span>proxy<span class="token punctuation">.</span>MethodProxy<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>MethodProxy<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">204</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>CglibAopProxy$CglibMethodInvocation<span class="token punctuation">.</span><span class="token function">invokeJoinpoint</span><span class="token punctuation">(</span>CglibAopProxy<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">747</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>ReflectiveMethodInvocation<span class="token punctuation">.</span><span class="token function">proceed</span><span class="token punctuation">(</span>ReflectiveMethodInvocation<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">163</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>adapter<span class="token punctuation">.</span>MethodBeforeAdviceInterceptor<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>MethodBeforeAdviceInterceptor<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">52</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>ReflectiveMethodInvocation<span class="token punctuation">.</span><span class="token function">proceed</span><span class="token punctuation">(</span>ReflectiveMethodInvocation<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">185</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>adapter<span class="token punctuation">.</span>AfterReturningAdviceInterceptor<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>AfterReturningAdviceInterceptor<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">52</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>ReflectiveMethodInvocation<span class="token punctuation">.</span><span class="token function">proceed</span><span class="token punctuation">(</span>ReflectiveMethodInvocation<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">185</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>interceptor<span class="token punctuation">.</span>ExposeInvocationInterceptor<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>ExposeInvocationInterceptor<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">92</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>ReflectiveMethodInvocation<span class="token punctuation">.</span><span class="token function">proceed</span><span class="token punctuation">(</span>ReflectiveMethodInvocation<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">185</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>aop<span class="token punctuation">.</span>framework<span class="token punctuation">.</span>CglibAopProxy$DynamicAdvisedInterceptor<span class="token punctuation">.</span><span class="token function">intercept</span><span class="token punctuation">(</span>CglibAopProxy<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">689</span><span class="token punctuation">)</span>
        at com<span class="token punctuation">.</span>sh<span class="token punctuation">.</span>controller<span class="token punctuation">.</span>admin<span class="token punctuation">.</span>AttAchController$$EnhancerBySpringCGLIB$$<span class="token number">4003049</span>c<span class="token punctuation">.</span><span class="token function">upload</span><span class="token punctuation">(</span><span class="token operator">&lt;</span>generated<span class="token operator">&gt;</span><span class="token punctuation">)</span>
        at sun<span class="token punctuation">.</span>reflect<span class="token punctuation">.</span>NativeMethodAccessorImpl<span class="token punctuation">.</span><span class="token function">invoke0</span><span class="token punctuation">(</span>Native Method<span class="token punctuation">)</span>
        at sun<span class="token punctuation">.</span>reflect<span class="token punctuation">.</span>NativeMethodAccessorImpl<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>NativeMethodAccessorImpl<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">62</span><span class="token punctuation">)</span>
        at sun<span class="token punctuation">.</span>reflect<span class="token punctuation">.</span>DelegatingMethodAccessorImpl<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>DelegatingMethodAccessorImpl<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">43</span><span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>lang<span class="token punctuation">.</span>reflect<span class="token punctuation">.</span>Method<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>Method<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">498</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>method<span class="token punctuation">.</span>support<span class="token punctuation">.</span>InvocableHandlerMethod<span class="token punctuation">.</span><span class="token function">doInvoke</span><span class="token punctuation">(</span>InvocableHandlerMethod<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">209</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>method<span class="token punctuation">.</span>support<span class="token punctuation">.</span>InvocableHandlerMethod<span class="token punctuation">.</span><span class="token function">invokeForRequest</span><span class="token punctuation">(</span>InvocableHandlerMethod<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">136</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>mvc<span class="token punctuation">.</span>method<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>ServletInvocableHandlerMethod<span class="token punctuation">.</span><span class="token function">invokeAndHandle</span><span class="token punctuation">(</span>ServletInvocableHandlerMethod<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">102</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>mvc<span class="token punctuation">.</span>method<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>RequestMappingHandlerAdapter<span class="token punctuation">.</span><span class="token function">invokeHandlerMethod</span><span class="token punctuation">(</span>RequestMappingHandlerAdapter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">877</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>mvc<span class="token punctuation">.</span>method<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>RequestMappingHandlerAdapter<span class="token punctuation">.</span><span class="token function">handleInternal</span><span class="token punctuation">(</span>RequestMappingHandlerAdapter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">783</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>mvc<span class="token punctuation">.</span>method<span class="token punctuation">.</span>AbstractHandlerMethodAdapter<span class="token punctuation">.</span><span class="token function">handle</span><span class="token punctuation">(</span>AbstractHandlerMethodAdapter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">87</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>DispatcherServlet<span class="token punctuation">.</span><span class="token function">doDispatch</span><span class="token punctuation">(</span>DispatcherServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">991</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>DispatcherServlet<span class="token punctuation">.</span><span class="token function">doService</span><span class="token punctuation">(</span>DispatcherServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">925</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>FrameworkServlet<span class="token punctuation">.</span><span class="token function">processRequest</span><span class="token punctuation">(</span>FrameworkServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">974</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>FrameworkServlet<span class="token punctuation">.</span><span class="token function">doPost</span><span class="token punctuation">(</span>FrameworkServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">877</span><span class="token punctuation">)</span>
        at javax<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>http<span class="token punctuation">.</span>HttpServlet<span class="token punctuation">.</span><span class="token function">service</span><span class="token punctuation">(</span>HttpServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">661</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>FrameworkServlet<span class="token punctuation">.</span><span class="token function">service</span><span class="token punctuation">(</span>FrameworkServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">851</span><span class="token punctuation">)</span>
        at javax<span class="token punctuation">.</span>servlet<span class="token punctuation">.</span>http<span class="token punctuation">.</span>HttpServlet<span class="token punctuation">.</span><span class="token function">service</span><span class="token punctuation">(</span>HttpServlet<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">742</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">231</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>tomcat<span class="token punctuation">.</span>websocket<span class="token punctuation">.</span>server<span class="token punctuation">.</span>WsFilter<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>WsFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">52</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">193</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at com<span class="token punctuation">.</span>alibaba<span class="token punctuation">.</span>druid<span class="token punctuation">.</span>support<span class="token punctuation">.</span>http<span class="token punctuation">.</span>WebStatFilter<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>WebStatFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">123</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">193</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>RequestContextFilter<span class="token punctuation">.</span><span class="token function">doFilterInternal</span><span class="token punctuation">(</span>RequestContextFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">99</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>OncePerRequestFilter<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>OncePerRequestFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">107</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">193</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>HttpPutFormContentFilter<span class="token punctuation">.</span><span class="token function">doFilterInternal</span><span class="token punctuation">(</span>HttpPutFormContentFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">109</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>OncePerRequestFilter<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>OncePerRequestFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">107</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">193</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>HiddenHttpMethodFilter<span class="token punctuation">.</span><span class="token function">doFilterInternal</span><span class="token punctuation">(</span>HiddenHttpMethodFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">81</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>OncePerRequestFilter<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>OncePerRequestFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">107</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">193</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>CharacterEncodingFilter<span class="token punctuation">.</span><span class="token function">doFilterInternal</span><span class="token punctuation">(</span>CharacterEncodingFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">200</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>web<span class="token punctuation">.</span>filter<span class="token punctuation">.</span>OncePerRequestFilter<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>OncePerRequestFilter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">107</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">internalDoFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">193</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationFilterChain<span class="token punctuation">.</span><span class="token function">doFilter</span><span class="token punctuation">(</span>ApplicationFilterChain<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">166</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>StandardWrapperValve<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>StandardWrapperValve<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">198</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>StandardContextValve<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>StandardContextValve<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">96</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>authenticator<span class="token punctuation">.</span>AuthenticatorBase<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>AuthenticatorBase<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">496</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>StandardHostValve<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>StandardHostValve<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">140</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>valves<span class="token punctuation">.</span>ErrorReportValve<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>ErrorReportValve<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">81</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>StandardEngineValve<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span>StandardEngineValve<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">87</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>connector<span class="token punctuation">.</span>CoyoteAdapter<span class="token punctuation">.</span><span class="token function">service</span><span class="token punctuation">(</span>CoyoteAdapter<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">342</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>coyote<span class="token punctuation">.</span>http11<span class="token punctuation">.</span>Http11Processor<span class="token punctuation">.</span><span class="token function">service</span><span class="token punctuation">(</span>Http11Processor<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">803</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>coyote<span class="token punctuation">.</span>AbstractProcessorLight<span class="token punctuation">.</span><span class="token function">process</span><span class="token punctuation">(</span>AbstractProcessorLight<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">66</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>coyote<span class="token punctuation">.</span>AbstractProtocol$ConnectionHandler<span class="token punctuation">.</span><span class="token function">process</span><span class="token punctuation">(</span>AbstractProtocol<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">790</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>tomcat<span class="token punctuation">.</span>util<span class="token punctuation">.</span>net<span class="token punctuation">.</span>NioEndpoint$SocketProcessor<span class="token punctuation">.</span><span class="token function">doRun</span><span class="token punctuation">(</span>NioEndpoint<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">1459</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>tomcat<span class="token punctuation">.</span>util<span class="token punctuation">.</span>net<span class="token punctuation">.</span>SocketProcessorBase<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span>SocketProcessorBase<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">49</span><span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>ThreadPoolExecutor<span class="token punctuation">.</span><span class="token function">runWorker</span><span class="token punctuation">(</span>ThreadPoolExecutor<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">1149</span><span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>ThreadPoolExecutor$Worker<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span>ThreadPoolExecutor<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">624</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>tomcat<span class="token punctuation">.</span>util<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>TaskThread$WrappingRunnable<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span>TaskThread<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">61</span><span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>lang<span class="token punctuation">.</span>Thread<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">748</span><span class="token punctuation">)</span>
Caused by<span class="token punctuation">:</span> java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>FileNotFoundException<span class="token punctuation">:</span> <span class="token operator">/</span>tmp<span class="token operator">/</span>tomcat<span class="token punctuation">.</span><span class="token number">5089835798184465073.8081</span><span class="token operator">/</span>work<span class="token operator">/</span>Tomcat<span class="token operator">/</span>localhost<span class="token operator">/</span><span class="token constant">ROOT</span><span class="token operator">/</span>www<span class="token operator">/</span>server<span class="token operator">/</span>apache<span class="token operator">-</span>tomcat<span class="token operator">-</span><span class="token number">8.5</span><span class="token number">.32</span><span class="token operator">/</span>webapps<span class="token operator">/</span>jxmstory<span class="token operator">/</span>uploadfile<span class="token operator">/</span><span class="token number">201811</span><span class="token operator">/</span><span class="token number">1541155647100.</span><span class="token function">jpg</span> <span class="token punctuation">(</span>No such file or directory<span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>FileOutputStream<span class="token punctuation">.</span><span class="token function">open0</span><span class="token punctuation">(</span>Native Method<span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>FileOutputStream<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span>FileOutputStream<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">270</span><span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>FileOutputStream<span class="token punctuation">.</span><span class="token operator">&lt;</span>init<span class="token operator">&gt;</span><span class="token punctuation">(</span>FileOutputStream<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">213</span><span class="token punctuation">)</span>
        at java<span class="token punctuation">.</span>io<span class="token punctuation">.</span>FileOutputStream<span class="token punctuation">.</span><span class="token operator">&lt;</span>init<span class="token operator">&gt;</span><span class="token punctuation">(</span>FileOutputStream<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">162</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>tomcat<span class="token punctuation">.</span>util<span class="token punctuation">.</span>http<span class="token punctuation">.</span>fileupload<span class="token punctuation">.</span>disk<span class="token punctuation">.</span>DiskFileItem<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>DiskFileItem<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">400</span><span class="token punctuation">)</span>
        at org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>core<span class="token punctuation">.</span>ApplicationPart<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>ApplicationPart<span class="token punctuation">.</span>java<span class="token punctuation">:</span><span class="token number">120</span><span class="token punctuation">)</span>
        <span class="token operator">...</span> <span class="token number">71</span> more
<div class="hljs-button signin" data-title="登录后复制"></div></code></pre>
<h2>报错原因:</h2>
<p>之前上传文件部分代码如下</p>
<p>压缩上传可以 普通上传在<code>file.transferTo(fie);</code>会报错<br>
因为上面创建临时文件的时候执行了<code>file.transferTo(temFile);</code>方法    该方法执行一遍后文件流已经关闭</p>
<pre class="prettyprint"><code class="prism language-java has-numbering">               <span class="token comment">//文件上传</span>
                <span class="token comment">//创建临时文件 将原文件file放入临时文件temFile</span>
                File temFile <span class="token operator">=</span>File<span class="token punctuation">.</span><span class="token function">createTempFile</span><span class="token punctuation">(</span><span class="token string">"temp"</span><span class="token punctuation">,</span> <span class="token string">"."</span> <span class="token operator">+</span> fileType<span class="token punctuation">)</span><span class="token punctuation">;</span>
                file<span class="token punctuation">.</span><span class="token function">transferTo</span><span class="token punctuation">(</span>temFile<span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">if</span><span class="token punctuation">(</span>temFile<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&gt;</span><span class="token number">1024</span><span class="token operator">*</span><span class="token number">1024</span><span class="token operator">*</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                  <span class="token comment">//大于10M 压缩上传</span>
                  String filedir <span class="token operator">=</span> realDirectory<span class="token operator">+</span><span class="token string">"/"</span> <span class="token operator">+</span> filename<span class="token punctuation">;</span> <span class="token comment">// 以系统时间作为上传文件名称,设置上传文件的完整路径</span>
                  ImgUtill<span class="token punctuation">.</span><span class="token function">compressImage</span><span class="token punctuation">(</span>temFile<span class="token punctuation">.</span><span class="token function">getAbsolutePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> filedir<span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
                  <span class="token comment">//普通上传</span>
                  File fi <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>realDirectory<span class="token punctuation">)</span><span class="token punctuation">;</span>
                  <span class="token keyword">try</span> <span class="token punctuation">{</span>
                        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>fi<span class="token punctuation">.</span><span class="token function">isDirectory</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// 如果文件夹不存在就新建</span>
                            fi<span class="token punctuation">.</span><span class="token function">mkdirs</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        <span class="token punctuation">}</span>
                        File fie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>realDirectory<span class="token punctuation">,</span> filename<span class="token punctuation">)</span><span class="token punctuation">;</span>
                        file<span class="token punctuation">.</span><span class="token function">transferTo</span><span class="token punctuation">(</span>fie<span class="token punctuation">)</span><span class="token punctuation">;</span>
                  <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">IOException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
                        e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        <span class="token keyword">throw</span> BusinessException<span class="token punctuation">.</span><span class="token function">withErrorCode</span><span class="token punctuation">(</span>ErrorConstant<span class="token punctuation">.</span>Att<span class="token punctuation">.</span>UPLOAD_FILE_FAIL<span class="token punctuation">)</span>
                              <span class="token punctuation">.</span><span class="token function">withErrorMessageArguments</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  <span class="token punctuation">}</span>
                <span class="token punctuation">}</span>
                temFile<span class="token punctuation">.</span><span class="token function">deleteOnExit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 令临时文件在JVM关闭的时候自动删除</span>
                temFile<span class="token punctuation">.</span><span class="token function">delete</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 立刻删除临时文件</span>
<div class="hljs-button signin" data-title="登录后复制"></div></code></pre>
<p>修改后的上传文件部分代码</p>
<pre class="prettyprint"><code class="prism language-java has-numbering">    <span class="token annotation punctuation">@PostMapping</span><span class="token punctuation">(</span>value <span class="token operator">=</span> <span class="token string">"upload"</span><span class="token punctuation">)</span>
    <span class="token annotation punctuation">@ResponseBody</span>
    <span class="token keyword">public</span> APIResponse <span class="token function">upload</span><span class="token punctuation">(</span><span class="token annotation punctuation">@RequestParam</span><span class="token punctuation">(</span><span class="token string">"file"</span><span class="token punctuation">)</span> MultipartFile<span class="token punctuation">[</span><span class="token punctuation">]</span> files<span class="token punctuation">,</span>
                                  HttpServletRequest request<span class="token punctuation">,</span>
                                  HttpServletResponse response<span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception<span class="token punctuation">{</span>
<pre><code>    &lt;span class="token comment"&gt;//文件存在&lt;/span&gt;
    &lt;span class="token keyword"&gt;if&lt;/span&gt; &lt;span class="token punctuation"&gt;(&lt;/span&gt;files &lt;span class="token operator"&gt;!=&lt;/span&gt; null&lt;span class="token punctuation"&gt;)&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
      &lt;span class="token comment"&gt;//遍历图片&lt;/span&gt;
      &lt;span class="token keyword"&gt;for&lt;/span&gt; &lt;span class="token punctuation"&gt;(&lt;/span&gt;MultipartFile file &lt;span class="token operator"&gt;:&lt;/span&gt; files&lt;span class="token punctuation"&gt;)&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
            &lt;span class="token comment"&gt;//定义上传文件路径、文件名、文件格式&lt;/span&gt;
            java&lt;span class="token punctuation"&gt;.&lt;/span&gt;util&lt;span class="token punctuation"&gt;.&lt;/span&gt;Date Datenow&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token keyword"&gt;new&lt;/span&gt; &lt;span class="token class-name"&gt;java&lt;span class="token punctuation"&gt;.&lt;/span&gt;util&lt;span class="token punctuation"&gt;.&lt;/span&gt;Date&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;&lt;span class="token comment"&gt;//获取当前日期&lt;/span&gt;
            java&lt;span class="token punctuation"&gt;.&lt;/span&gt;text&lt;span class="token punctuation"&gt;.&lt;/span&gt;SimpleDateFormat formatter &lt;span class="token operator"&gt;=&lt;/span&gt; &lt;span class="token keyword"&gt;new&lt;/span&gt; &lt;span class="token class-name"&gt;java&lt;span class="token punctuation"&gt;.&lt;/span&gt;text&lt;span class="token punctuation"&gt;.&lt;/span&gt;SimpleDateFormat&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"yyyyMMdd"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
            String nowdate &lt;span class="token operator"&gt;=&lt;/span&gt; formatter&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;format&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;Datenow&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;substring&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token number"&gt;0&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt;&lt;span class="token number"&gt;6&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt; &lt;span class="token comment"&gt;//将日期格式化&lt;/span&gt;
            &lt;span class="token comment"&gt;//服务器真实路径&lt;/span&gt;
            String realDirectory &lt;span class="token operator"&gt;=&lt;/span&gt; WebConst&lt;span class="token punctuation"&gt;.&lt;/span&gt;FILE_REAL_PATH &lt;span class="token operator"&gt;+&lt;/span&gt; nowdate&lt;span class="token punctuation"&gt;;&lt;/span&gt;
            &lt;span class="token comment"&gt;//原文件名&lt;/span&gt;
            String fileName &lt;span class="token operator"&gt;=&lt;/span&gt; file&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;getOriginalFilename&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
            &lt;span class="token comment"&gt;//文件类型&lt;/span&gt;
            String fileType&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token string"&gt;""&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
            &lt;span class="token keyword"&gt;if&lt;/span&gt; &lt;span class="token punctuation"&gt;(&lt;/span&gt;fileName&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;substring&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;fileName&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;length&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token operator"&gt;-&lt;/span&gt;&lt;span class="token number"&gt;4&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;equals&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"jpeg"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
                fileType&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token string"&gt;".jpeg"&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
            &lt;span class="token punctuation"&gt;}&lt;/span&gt;&lt;span class="token keyword"&gt;else&lt;/span&gt;&lt;span class="token punctuation"&gt;{&lt;/span&gt;
                fileType &lt;span class="token operator"&gt;=&lt;/span&gt; fileName&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;substring&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;fileName&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;length&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token operator"&gt;-&lt;/span&gt;&lt;span class="token number"&gt;3&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
            &lt;span class="token punctuation"&gt;}&lt;/span&gt;
            &lt;span class="token comment"&gt;//对文件进行重新命名&lt;/span&gt;
            String filename &lt;span class="token operator"&gt;=&lt;/span&gt; System&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;currentTimeMillis&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt; &lt;span class="token operator"&gt;+&lt;/span&gt; &lt;span class="token string"&gt;"."&lt;/span&gt; &lt;span class="token operator"&gt;+&lt;/span&gt; fileType&lt;span class="token punctuation"&gt;;&lt;/span&gt;

            &lt;span class="token comment"&gt;//文件上传&lt;/span&gt;
            &lt;span class="token keyword"&gt;if&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;file&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;getSize&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token operator"&gt;&amp;gt;&lt;/span&gt;&lt;span class="token number"&gt;1024&lt;/span&gt;&lt;span class="token operator"&gt;*&lt;/span&gt;&lt;span class="token number"&gt;1024&lt;/span&gt;&lt;span class="token operator"&gt;*&lt;/span&gt;&lt;span class="token number"&gt;5&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;{&lt;/span&gt;
                &lt;span class="token comment"&gt;//大于10M 压缩上传&lt;/span&gt;
                &lt;span class="token comment"&gt;//创建临时文件 将原文件file放入临时文件temFile&lt;/span&gt;
                File temFile &lt;span class="token operator"&gt;=&lt;/span&gt;File&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;createTempFile&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"temp"&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt; &lt;span class="token string"&gt;"."&lt;/span&gt; &lt;span class="token operator"&gt;+&lt;/span&gt; fileType&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                file&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;transferTo&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;temFile&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;

                String filedir &lt;span class="token operator"&gt;=&lt;/span&gt; realDirectory&lt;span class="token operator"&gt;+&lt;/span&gt;&lt;span class="token string"&gt;"/"&lt;/span&gt; &lt;span class="token operator"&gt;+&lt;/span&gt; filename&lt;span class="token punctuation"&gt;;&lt;/span&gt; &lt;span class="token comment"&gt;// 以系统时间作为上传文件名称,设置上传文件的完整路径&lt;/span&gt;
                ImgUtill&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;compressImage&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;temFile&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;getAbsolutePath&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt; filedir&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;

                temFile&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;deleteOnExit&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt; &lt;span class="token comment"&gt;// 令临时文件在JVM关闭的时候自动删除&lt;/span&gt;
                temFile&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;delete&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt; &lt;span class="token comment"&gt;// 立刻删除临时文件&lt;/span&gt;
            &lt;span class="token punctuation"&gt;}&lt;/span&gt; &lt;span class="token keyword"&gt;else&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
                &lt;span class="token comment"&gt;//普通上传&lt;/span&gt;
                File fi &lt;span class="token operator"&gt;=&lt;/span&gt; &lt;span class="token keyword"&gt;new&lt;/span&gt; &lt;span class="token class-name"&gt;File&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;realDirectory&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                &lt;span class="token keyword"&gt;try&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
                  &lt;span class="token keyword"&gt;if&lt;/span&gt; &lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token operator"&gt;!&lt;/span&gt;fi&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;isDirectory&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt; &lt;span class="token comment"&gt;// 如果文件夹不存在就新建&lt;/span&gt;
                        fi&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;mkdirs&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                  &lt;span class="token punctuation"&gt;}&lt;/span&gt;
                  File fie &lt;span class="token operator"&gt;=&lt;/span&gt; &lt;span class="token keyword"&gt;new&lt;/span&gt; &lt;span class="token class-name"&gt;File&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;realDirectory&lt;span class="token punctuation"&gt;,&lt;/span&gt; filename&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                  file&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;transferTo&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;fie&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                &lt;span class="token punctuation"&gt;}&lt;/span&gt; &lt;span class="token keyword"&gt;catch&lt;/span&gt; &lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token class-name"&gt;IOException&lt;/span&gt; e&lt;span class="token punctuation"&gt;)&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
                  e&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;printStackTrace&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                  &lt;span class="token keyword"&gt;throw&lt;/span&gt; BusinessException&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;withErrorCode&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;ErrorConstant&lt;span class="token punctuation"&gt;.&lt;/span&gt;Att&lt;span class="token punctuation"&gt;.&lt;/span&gt;UPLOAD_FILE_FAIL&lt;span class="token punctuation"&gt;)&lt;/span&gt;
                            &lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;withErrorMessageArguments&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;e&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;getMessage&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
                &lt;span class="token punctuation"&gt;}&lt;/span&gt;
            &lt;span class="token punctuation"&gt;}&lt;/span&gt;
      &lt;span class="token punctuation"&gt;}&lt;/span&gt;
      &lt;span class="token keyword"&gt;return&lt;/span&gt; APIResponse&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;success&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
    &lt;span class="token punctuation"&gt;}&lt;/span&gt; &lt;span class="token keyword"&gt;else&lt;/span&gt; &lt;span class="token punctuation"&gt;{&lt;/span&gt;
      &lt;span class="token keyword"&gt;return&lt;/span&gt; APIResponse&lt;span class="token punctuation"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;fail&lt;/span&gt;&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"文件不存在"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;;&lt;/span&gt;
    &lt;span class="token punctuation"&gt;}&lt;/span&gt;

&lt;span class="token punctuation"&gt;}&lt;/span&gt;
</code></pre>
<div class="hljs-button signin" data-title="登录后复制"></div></code></pre>
<p>这个时候普通上传依然报上面的错误</p>
<h2>解决方法</h2>
<p>上传路径使用绝对路径</p>
<p>修改常量类中定义的文件路径 在 www 前加/</p>
<pre class="prettyprint"><code class="prism language-java has-numbering">    <span class="token comment">//服务器真实地址(linux根目录需要以/开头)</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> String FILE_REAL_PATH <span class="token operator">=</span> <span class="token string">"/www/server/apache-tomcat-8.5.32/webapps/jxmstory/uploadfile/"</span><span class="token punctuation">;</span>
<div class="hljs-button signin" data-title="登录后复制"></div></code></pre>
<p>未完</p>
<pre><code>      &lt;/div&gt;
</code></pre>
<p>原文地址:https://blog.csdn.net/Ani521smile/article/details/83660328</p>
</div><br><br>
来源:https://www.cnblogs.com/jpfss/p/10985127.html
頁: [1]
查看完整版本: SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案