上傳圖片報錯java.io.IOException: Stream closed
一.上傳圖片報錯
報錯文字:
2020-12-12 22:12:07.473 [http-nio-82-exec-1] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: Stream closed] with root cause
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:359)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
報錯截圖:
二.原因:
1.由於logback過濾器導致
解決方案:
spring: mvc: hiddenmethod: filter: enabled: true
參考博文:
https://www.cnblogs.com/siroinfo/p/13045008.html
2.由於多次關閉了Stream
問題舉例:
解決方案:
將多餘的close語句去掉。
同理,在jsp中,或servlet中也一樣,多次關閉out,也會丟擲此異常,解決方法與此相同!
注:finally{}內的內容一定會執行!!!
參考博文:
https://blog.csdn.net/qq_42551740/article/details/89812028
3.由於流的關閉順序錯誤:先關了大的、後關了小的導致
問題舉例:
解決方案:
bufferwriter流使用了outputStreamWriter流,所以關閉bufferwriter流也會關閉outputStreamWriter流; 但是下面有使用outputStreamWriter流,相當於使用一個關閉了的流。解決辦法是換下位置就可以了.