MalformedStreamException при загрузке файла в приложении Spring Boot 2.2.5 - PullRequest
0 голосов
/ 15 марта 2020

После обновления Spring Boot с 2.2.4 до 2.2.5 в моем приложении я получаю следующее исключение при загрузке файлов с формой multipart/form-data:

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 org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly] with root cause

org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
    at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:1033)
    at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:931)
    at java.io.InputStream.read(InputStream.java:101)
    at org.apache.commons.fileupload.util.Streams.copy(Streams.java:98)
    at org.apache.commons.fileupload.util.Streams.copy(Streams.java:68)
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:346)
    at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:113)
    at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:159)
    at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:143)
    at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1178)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1012)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
...

Форма выглядит следующим образом:

<form id="addPhotosForm" method="post" action="/images/add" enctype="multipart/form-data">
    <div class="row">
        <div class="col-sm-4">
            <div class="input-group">
                <input type="file" name="images" multiple>
            </div>
        </div>
        <div class="col-sm-6 pull-left">
            <input name="submit" type="submit" value="Save">
        </div>
    </div>
</form>

А контроллер выглядит так:

@RequestMapping(value = "/images/add")
public String addPhoto(@RequestParam(value = "images", required = false) MultipartFile[] multipartImages) {
    //...
}

1 Ответ

0 голосов
/ 28 марта 2020

Работает нормально после обновления Spring Boot до версии 2.2.6.

...