1. 程式人生 > 其它 >上傳圖片報錯java.io.IOException: Stream closed

上傳圖片報錯java.io.IOException: Stream closed

技術標籤:JAVAjava

一.上傳圖片報錯

報錯文字:

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

java.io.IOException: Stream closed
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流,相當於使用一個關閉了的流。解決辦法是換下位置就可以了.

參考博文:

https://developer.aliyun.com/article/378197