fix(log): 修复构建请求可重复读流后过滤文件流导致的错误问题

This commit is contained in:
liquor
2025-03-26 14:41:36 +00:00
committed by Charles7c
parent e294d69cdb
commit 1613374fcc
4 changed files with 20 additions and 9 deletions

View File

@@ -87,18 +87,18 @@ public class RepeatReadRequestWrapper extends HttpServletRequestWrapper {
public BufferedReader getReader() throws IOException {
// 如果是文件上传直接返回原始Reader
if (isMultipartContent(originalRequest)) {
return originalRequest.getReader();
new BufferedReader(new InputStreamReader(originalRequest.getInputStream(), StandardCharsets.UTF_8));
}
return new BufferedReader(new InputStreamReader(new ByteArrayInputStream(cachedBody), StandardCharsets.UTF_8));
return new BufferedReader(new InputStreamReader(getInputStream()));
}
/**
* 检查是否为文件上传请求
*
*
* @param request 请求对象
* @return 是否为文件上传请求
*/
private boolean isMultipartContent(HttpServletRequest request) {
public boolean isMultipartContent(HttpServletRequest request) {
return request.getContentType() != null && request.getContentType().toLowerCase().startsWith("multipart/");
}
}

View File

@@ -20,6 +20,7 @@ import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.WriteListener;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponseWrapper;
import org.springframework.http.MediaType;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -54,7 +55,7 @@ public class RepeatReadResponseWrapper extends HttpServletResponseWrapper {
// 根据 Content-Type 判断是否为流式响应
if (type != null) {
String lowerType = type.toLowerCase();
isStreamingResponse = lowerType.contains("text/event-stream");
isStreamingResponse = lowerType.contains(MediaType.TEXT_EVENT_STREAM_VALUE);
}
}
@@ -62,7 +63,7 @@ public class RepeatReadResponseWrapper extends HttpServletResponseWrapper {
String contentType = getContentType();
if (contentType != null) {
String lowerType = contentType.toLowerCase();
isStreamingResponse = lowerType.contains("text/event-stream");
isStreamingResponse = lowerType.contains(MediaType.TEXT_EVENT_STREAM_VALUE);
}
}