mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
文件上传缓存bugfix
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package cn.lihongjie.coal.filter;
|
||||
|
||||
import jakarta.servlet.ReadListener;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletInputStream;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequestWrapper;
|
||||
import jakarta.servlet.http.Part;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@@ -11,6 +13,7 @@ import org.apache.commons.io.IOUtils;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
|
||||
public class CacheBodyRequestWrapper extends HttpServletRequestWrapper {
|
||||
|
||||
@@ -35,6 +38,11 @@ public class CacheBodyRequestWrapper extends HttpServletRequestWrapper {
|
||||
return inputStream;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Part> getParts() throws IOException, ServletException {
|
||||
return super.getParts();
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
inputStream.reset();
|
||||
}
|
||||
@@ -75,5 +83,7 @@ public class CacheBodyRequestWrapper extends HttpServletRequestWrapper {
|
||||
public int read() throws IOException {
|
||||
return cache.read();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,9 @@ import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
@@ -27,7 +29,18 @@ public class CacheFilter extends OncePerRequestFilter {
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
var req = new CacheBodyRequestWrapper(request);
|
||||
HttpServletRequest req = request;
|
||||
|
||||
MediaType mediaType =
|
||||
MediaType.parseMediaType(
|
||||
ObjectUtils.defaultIfNull(
|
||||
request.getContentType(),
|
||||
MediaType.APPLICATION_OCTET_STREAM_VALUE));
|
||||
// 文件上传不对body进行签名
|
||||
if (!mediaType.isCompatibleWith(MediaType.MULTIPART_FORM_DATA)) {
|
||||
|
||||
req = new CacheBodyRequestWrapper(request);
|
||||
}
|
||||
filterChain.doFilter(req, response);
|
||||
long end = System.currentTimeMillis();
|
||||
response.setHeader(Constants.HTTP_HEADER_RESPONSE_TIME, String.valueOf(end - start));
|
||||
|
||||
@@ -6,6 +6,7 @@ import jakarta.persistence.Entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
@@ -35,7 +36,7 @@ public class SysConfigEntity extends CommonEntity {
|
||||
|
||||
switch (type) {
|
||||
case "1":
|
||||
if (!configVal.matches(regexValidator)) {
|
||||
if (StringUtils.isNotEmpty(regexValidator) && !configVal.matches(regexValidator)) {
|
||||
throw new RuntimeException("字符串不符合正则表达式");
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user