Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-gateway
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-gateway
Commits
08072d09
提交
08072d09
authored
7月 17, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、重写底层代码,解决积木报表导出数据较大时,请求报错问题:Exceeded limit on max bytes to buffer : 262144
上级
22b77dcf
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
113 行增加
和
0 行删除
+113
-0
AbstractDataBufferDecoder.java
...springframework/core/codec/AbstractDataBufferDecoder.java
+113
-0
没有找到文件。
src/main/java/org/springframework/core/codec/AbstractDataBufferDecoder.java
0 → 100644
浏览文件 @
08072d09
/*
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
core
.
codec
;
import
org.reactivestreams.Publisher
;
import
org.springframework.core.ResolvableType
;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.core.io.buffer.DataBufferUtils
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.MimeType
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.util.Map
;
/**
* 重写SpringWebFex底层 为了解决GateWay报错:Exceeded limit on max bytes to buffer : 262144 错误
* Abstract base class for {@code Decoder} implementations that can decode
* a {@code DataBuffer} directly to the target element type.
*
* <p>Sub-classes must implement {@link #decodeDataBuffer} to provide a way to
* transform a {@code DataBuffer} to the target data type. The default
* {@link #decode} implementation transforms each individual data buffer while
* {@link #decodeToMono} applies "reduce" and transforms the aggregated buffer.
*
* <p>Sub-classes can override {@link #decode} in order to split the input stream
* along different boundaries (e.g. on new line characters for {@code String})
* or always reduce to a single data buffer (e.g. {@code Resource}).
*
* @author Rossen Stoyanchev
* @since 5.0
* @param <T> the element type
* https://blog.csdn.net/fujiakai/article/details/134972127
*/
@SuppressWarnings
(
"deprecation"
)
public
abstract
class
AbstractDataBufferDecoder
<
T
>
extends
AbstractDecoder
<
T
>
{
private
int
maxInMemorySize
=
10
*
256
*
1024
*
10
;
protected
AbstractDataBufferDecoder
(
MimeType
...
supportedMimeTypes
)
{
super
(
supportedMimeTypes
);
}
/**
* Configure a limit on the number of bytes that can be buffered whenever
* the input stream needs to be aggregated. This can be a result of
* decoding to a single {@code DataBuffer},
* {@link java.nio.ByteBuffer ByteBuffer}, {@code byte[]},
* {@link org.springframework.core.io.Resource Resource}, {@code String}, etc.
* It can also occur when splitting the input stream, e.g. delimited text,
* in which case the limit applies to data buffered between delimiters.
* <p>By default this is set to 256K.
* @param byteCount the max number of bytes to buffer, or -1 for unlimited
* @since 5.1.11
*/
public
void
setMaxInMemorySize
(
int
byteCount
)
{
this
.
maxInMemorySize
=
byteCount
;
}
/**
* Return the {@link #setMaxInMemorySize configured} byte count limit.
* @since 5.1.11
*/
public
int
getMaxInMemorySize
()
{
return
this
.
maxInMemorySize
;
}
@Override
public
Flux
<
T
>
decode
(
Publisher
<
DataBuffer
>
input
,
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
return
Flux
.
from
(
input
).
map
(
buffer
->
decodeDataBuffer
(
buffer
,
elementType
,
mimeType
,
hints
));
}
@Override
public
Mono
<
T
>
decodeToMono
(
Publisher
<
DataBuffer
>
input
,
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
return
DataBufferUtils
.
join
(
input
,
this
.
maxInMemorySize
)
.
map
(
buffer
->
decodeDataBuffer
(
buffer
,
elementType
,
mimeType
,
hints
));
}
/**
* How to decode a {@code DataBuffer} to the target element type.
* @deprecated as of 5.2, please implement
* {@link #decode(DataBuffer, ResolvableType, MimeType, Map)} instead
*/
@Deprecated
@Nullable
protected
T
decodeDataBuffer
(
DataBuffer
buffer
,
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
return
decode
(
buffer
,
elementType
,
mimeType
,
hints
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论