multipart/form-data遇上IOException:Stream ended unexpectedly

IOException:Stream ended unexpectedly

前阵子在使用spring cloud gateway的过程中,遇到图片上传出现异常:Processing of multipart/form-data request failed. Stream ended unexpectedly(流异常关闭)。
在这里插入图片描述
从异常信息可以看到,springMvc在处理multipart/form-data格式的请求中,使用了StandardServletMultipartResolver对请求进行解析并做数据转换,在转换数据的过程中,遇到了异常,在没有正常解析到预期数据的情况下,流读取已经完毕,因此抛了此异常。因此可以分析,有可能是服务在接收请求的过程中,数据有丢失的情况。

数据丢失排查

1、一般网关会有文件上传大小限制,排查网关文件大小限制的问题;
2、排查请求经过spring cloud gateway数据被修改;

文件大小限制

spring cloud gateway 官方示例配置:

spring:
  cloud:
    gateway:
      routes:
      - id: request_size_route
        uri: http://localhost:8080/upload
        predicates:
        - Path=/upload
        filters:
        - name: RequestSize
          args:
            maxSize: 5000000

当请求体超过限制被拒,RequestSize GatewayFilter 将设置响应状态为413 Payload Too Large并携带报头errorMessage。以下示例显示了这样的内容errorMessage:

errorMessage` : `Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB

maxSize默认请求大小为:5 MB。
由于网关并没直接返回以上异常信息,所以排除是文件大小限制问题导致。

spring cloud gateway 修改了请求体?

2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Loggers.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] Increasing pending responses, now 1
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ COMPLETE
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Loggers.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] [HttpServer] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@7ffec058
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|DefaultPartBodyStreamStorageFactory.java|<init>|Temporary folder: /tmp/nio-file-upload
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|DefaultPartBodyStreamStorageFactory.java|<init>|Temporary folder: /tmp/nio-file-upload
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Loggers.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] Subscribing inbound receiver [pending: 1, cancelled:false, inboundDone: false]
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 16384B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 00 02 08 20 80 00 02 08 20 80 00 02 08 20 80 00 |... .... .... ..|
|00000010| 02 08 20 80 00 02 08 20 80 00 02 08 20 80 00 02 |.. .... .... ...|
|00000020| 61 16 20 81 33 cc e0 9c 0e 01 04 10 40 00 01 04 |a. .3.......@...|
|00000030| 10 40 00 01 04 10 40 00 01 04 10 40 00 01 04 10 |.@....@....@....|

|00003ff0| a0 60 d1 d4 c8 0f c6 7a 57 b1 57 fd 6e 70 f8 38 |.`.....zW.W.np.8|
+--------+-------------------------------------------------+----------------+
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客户端]] READ: 65536B
2020-09-04 16:26:19|[reactor-http-server-epoll-5]|Slf4JLogger.java|debug|[id: 0xd99e8e2b, L:/[网关] - R:/[客
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值