From e7e25e15e37bfd1433dcbb601680666791a35dad Mon Sep 17 00:00:00 2001 From: tanghc Date: Thu, 15 Aug 2019 18:11:43 +0800 Subject: [PATCH] =?UTF-8?q?gateway=E6=94=AF=E6=8C=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gateway/ServerWebExchangeUtil.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java index 9433e06a..09848028 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java @@ -2,6 +2,7 @@ package com.gitee.sop.gatewaycommon.gateway; import com.alibaba.fastjson.JSON; import com.gitee.sop.gatewaycommon.bean.SopConstants; +import com.gitee.sop.gatewaycommon.gateway.common.FileUploadHttpServletRequest; import com.gitee.sop.gatewaycommon.param.ApiParam; import com.gitee.sop.gatewaycommon.util.RequestUtil; import org.apache.commons.lang3.StringUtils; @@ -12,6 +13,8 @@ import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; +import javax.servlet.http.HttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -61,10 +64,14 @@ public class ServerWebExchangeUtil { String cachedBody = exchange.getAttribute(CACHE_REQUEST_BODY_OBJECT_KEY); if (cachedBody != null) { MediaType contentType = exchange.getRequest().getHeaders().getContentType(); + String contentTypeStr = contentType == null ? "" : contentType.toString().toLowerCase(); // 如果是json方式提交 - if (contentType != null - && StringUtils.containsAny(contentType.toString().toLowerCase(), "json", "text")) { + if (StringUtils.containsAny(contentTypeStr, "json", "text")) { params = JSON.parseObject(cachedBody); + } else if (StringUtils.containsIgnoreCase(contentTypeStr, "multipart")) { + // 如果是文件上传请求 + HttpServletRequest fileUploadRequest = getFileUploadRequest(exchange, cachedBody); + params = RequestUtil.convertMultipartRequestToMap(fileUploadRequest); } else { params = RequestUtil.parseQueryToMap(cachedBody); } @@ -105,4 +112,18 @@ public class ServerWebExchangeUtil { .request(serverHttpRequestNew) .build(); } + + /** + * 获取一个文件上传request + * + * @param exchange 当前ServerWebExchange + * @param requestBody 上传文件请求体内容 + * @return 返回文件上传request + */ + public static HttpServletRequest getFileUploadRequest(ServerWebExchange exchange, String requestBody) { + byte[] data = requestBody.getBytes(StandardCharsets.UTF_8); + return new FileUploadHttpServletRequest(exchange.getRequest(), data); + } + + }