java - 在 Spring Boot 2.2.5 应用程序中上传文件时出现 MalformedStreamException

标签 java spring-boot multipartform-data tomcat9 spring-boot-2

在我的应用程序中将 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>

Controller 看起来像这样:

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

最佳答案

将 Spring Boot 更新到版本 2.2.6 后工作正常。

关于java - 在 Spring Boot 2.2.5 应用程序中上传文件时出现 MalformedStreamException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60688842/

相关文章:

swift - 使用 Alamofire 上传多部分表单数据显示服务器中缺少文件

java - 来自java的多部分文件上传发布请求

java - 重用库定义的异常

spring - 如何在 Junit 测试中更改代码中的 Spring 属性文件变量?

java - ANT 脚本中的条件任务执行

java - 在 Spring 中使用 Authentication 类测试 Controller

spring - 如何在Spring Boot中使用Thymeleaf生成XML?

javascript - Bootstrap 模式和 jQuery : form inputs are empty

java - 如何借助 JFileChooser <将选定的 jpeg 图像文件> 移动到 java swing 中选定的文件夹?

java - 通知管理器