1 严重: Servlet.service() for servlet [dispatcher] in context with path [/management] threw exception [Request processing failed; nested exception is java.lang.StringIndexOutOfBoundsException: String index out of range: -1] with root cause 2 java.lang.StringIndexOutOfBoundsException: String index out of range: -1 3 at java.base/java.lang.String.substring(String.java:1836) 4 at com.imooc.book.controller.BookController.uploadFile(BookController.java:129) 5 at com.imooc.book.controller.BookController.update(BookController.java:110) 6 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 7 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 8 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 9 at java.base/java.lang.reflect.Method.invoke(Method.java:564) 10 at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) 11 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) 12 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) 13 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 14 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 15 at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 16 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) 17 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) 18 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 19 at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883) 20 at javax.servlet.http.HttpServlet.service(HttpServlet.java:653) 21 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 22 at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 23 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 24 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 25 at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) 26 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 27 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 28 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 29 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 30 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 31 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 32 at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:122) 33 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 34 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 35 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 36 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) 37 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 38 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 40 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 41 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 42 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498) 43 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 44 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 45 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) 46 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 47 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 48 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 49 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 50 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 51 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) 52 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) 53 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 54 at java.base/java.lang.Thread.run(Thread.java:844)
错误原因:传入空的文件没有经过判断就对文件进行处理,需要加上判断:
1 uploadFile.getSize()!=0