org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-dat

本文记录了一次使用Apache Commons FileUpload组件进行文件上传时遇到的异常情况。异常主要表现为上传过程中出现FileNotFoundException,提示找不到指定的临时文件路径。文章深入探讨了异常产生的原因,并提供了异常堆栈跟踪,有助于理解问题所在。
已读4096,总大小:566319,第几项:0!!!上传进度=0%
已读4096,总大小:566319,第几项:1!!!上传进度=0%
已读4096,总大小:566319,第几项:2!!!上传进度=0%
已读7530,总大小:566319,第几项:2!!!上传进度=0%
已读11584,总大小:566319,第几项:2!!!上传进度=0%
已读15060,总大小:566319,第几项:2!!!上传进度=0%
已读19114,总大小:566319,第几项:2!!!上传进度=0%
已读22590,总大小:566319,第几项:2!!!上传进度=0%
已读26644,总大小:566319,第几项:2!!!上传进度=0%
已读30120,总大小:566319,第几项:2!!!上传进度=0%
已读34174,总大小:566319,第几项:2!!!上传进度=0%
已读37650,总大小:566319,第几项:2!!!上传进度=0%
已读41704,总大小:566319,第几项:2!!!上传进度=0%
已读45180,总大小:566319,第几项:2!!!上传进度=0%
已读49234,总大小:566319,第几项:2!!!上传进度=0%
已读52710,总大小:566319,第几项:2!!!上传进度=0%
已读56764,总大小:566319,第几项:2!!!上传进度=0%
已读60240,总大小:566319,第几项:2!!!上传进度=0%
已读64294,总大小:566319,第几项:2!!!上传进度=0%
已读67770,总大小:566319,第几项:2!!!上传进度=0%
已读71824,总大小:566319,第几项:2!!!上传进度=0%
已读75300,总大小:566319,第几项:2!!!上传进度=0%
已读79354,总大小:566319,第几项:2!!!上传进度=0%
已读82830,总大小:566319,第几项:2!!!上传进度=0%
已读86884,总大小:566319,第几项:2!!!上传进度=0%
已读90360,总大小:566319,第几项:2!!!上传进度=0%
已读94414,总大小:566319,第几项:2!!!上传进度=0%
已读97890,总大小:566319,第几项:2!!!上传进度=0%
已读101944,总大小:566319,第几项:2!!!上传进度=0%
已读105420,总大小:566319,第几项:2!!!上传进度=0%
已读109474,总大小:566319,第几项:2!!!上传进度=0%
已读112950,总大小:566319,第几项:2!!!上传进度=0%
已读114688,总大小:566319,第几项:2!!!上传进度=0%
已读118742,总大小:566319,第几项:2!!!上传进度=0%
已读122218,总大小:566319,第几项:2!!!上传进度=0%
已读126272,总大小:566319,第几项:2!!!上传进度=0%
已读129748,总大小:566319,第几项:2!!!上传进度=0%
已读131072,总大小:566319,第几项:2!!!上传进度=0%
已读135126,总大小:566319,第几项:2!!!上传进度=0%
org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. C:\apache-tomcat-6.0.35\webapps\day20\temp\upload__7a8e174a_13c347a96ae__8000_00000001.tmp (系统找不到指定的路径。)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:371)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at com.itheima.tfy.servlet.UploadServlet1.doGet(UploadServlet1.java:52)
at com.itheima.tfy.servlet.UploadServlet1.doPost(UploadServlet1.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.itheima.tfy.filter.NoCacheCharacterEncodingFilter.doFilter(NoCacheCharacterEncodingFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.FileNotFoundException: C:\apache-tomcat-6.0.35\webapps\day20\temp\upload__7a8e174a_13c347a96ae__8000_00000001.tmp (系统找不到指定的路径。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at org.apache.commons.io.output.DeferredFileOutputStream.thresholdReached(DeferredFileOutputStream.java:165)
at org.apache.commons.io.output.ThresholdingOutputStream.checkThreshold(ThresholdingOutputStream.java:221)
at org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:127)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:103)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:366)
... 20 more
2013-1-13 23:15:14 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet UploadServlet1 threw exception
java.lang.RuntimeException: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. C:\apache-tomcat-6.0.35\webapps\day20\temp\upload__7a8e174a_13c347a96ae__8000_00000001.tmp (系统找不到指定的路径。)
at com.itheima.tfy.servlet.UploadServlet1.doGet(UploadServlet1.java:89)
at com.itheima.tfy.servlet.UploadServlet1.doPost(UploadServlet1.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.itheima.tfy.filter.NoCacheCharacterEncodingFilter.doFilter(NoCacheCharacterEncodingFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. C:\apache-tomcat-6.0.35\webapps\day20\temp\upload__7a8e174a_13c347a96ae__8000_00000001.tmp (系统找不到指定的路径。)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:371)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at com.itheima.tfy.servlet.UploadServlet1.doGet(UploadServlet1.java:52)
... 18 more
Caused by: java.io.FileNotFoundException: C:\apache-tomcat-6.0.35\webapps\day20\temp\upload__7a8e174a_13c347a96ae__8000_00000001.tmp (系统找不到指定的路径。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at org.apache.commons.io.output.DeferredFileOutputStream.thresholdReached(DeferredFileOutputStream.java:165)
at org.apache.commons.io.output.ThresholdingOutputStream.checkThreshold(ThresholdingOutputStream.java:221)
at org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:127)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:103)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:366)
... 20 more
### Windows系统中处理multipart/form-data请求时出现Stream ended unexpectedly的解决方案 当在Windows系统中遇到`Failed to parse multipart servlet request`或`Stream ended unexpectedly`等问题时,通常是因为以下几个原因引起的: #### 1. 配置文件中的Multipart设置不正确 Spring Boot应用需要通过配置文件来调整HTTP Multipart的相关参数。以下是推荐的`application.yml`配置方式[^3]: ```yaml spring: http: multipart: enabled: true # 启用http上传处理 max-file-size: 100MB # 单个文件最大大小 max-request-size: 100MB # 请求总大小上限 file-size-threshold: 1MB # 达到该阈值时将数据写入磁盘 location: ./tmp/uploads # 临时存储路径 ``` 上述配置项解释如下: - `max-file-size`: 控制单个文件的最大尺寸。 - `max-request-size`: 控制整个请求的数据量上限。 - `file-size-threshold`: 定义内存缓冲区的临界值,超过此值则将数据保存至磁盘。 - `location`: 指定用于缓存的大文件的临时存储位置。 如果未指定`location`字段,则默认会在系统的临时目录创建大量小文件,可能导致性能下降甚至崩溃。 --- #### 2. Tomcat服务器的连接器超时时间不足 Tomcat作为嵌入式容器,默认情况下可能无法满足大文件上传的需求。可以通过修改`server.toml`或者`application.properties/yml`增加以下配置[^4]: ```properties server.servlet.context-path=/your-app-context server.connection-timeout=60000 # 增加连接超时时间为60秒 server.tomcat.max-swallow-size=-1 # 不限制吞吐量 ``` 对于生产环境中运行的应用程序来说,还需要确保操作系统层面允许足够的线程数以及网络带宽支持长时间传输大数据包。 --- #### 3. HTML表单缺少必要属性 HTML前端页面设计不当也可能引发此类异常。特别是输入框忘记定义`name`属性的情况下,在某些浏览器(如Internet Explorer)里确实会发生解析失败的情况: ```html <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <!-- 确保有name属性 --> <button type="submit">Submit</button> </form> ``` 注意这里的`enctype="multipart/form-data"`非常重要;另外就是确认所有的`<input>`标签都带有合法的名字标识符以便后台能够正常接收对应参数。 --- #### 4. 文件流被意外关闭 有时客户端发送过程中由于网络波动等原因造成部分字节丢失从而触发服务端抛出`Stream ended unexpectedly`错误消息[^1]^。对此类状况除了优化基础架构外还可以尝试捕获具体异常堆栈信息进一步定位根本原因所在。 --- 综上所述,针对Windows环境下发生的这些特定类型的异常现象可以从以上几个方面逐一排查直至彻底解决问题为止。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值