diff --git a/changelog.md b/changelog.md
index cfc42ddd..b645af4e 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,9 @@
# changelog
+## 3.1.2
+
+- 修复图片上传保存后图片破损问题
+
## 3.1.1
- 修复继承WebMvcConfigurationSupport导致的jackson序列化时间问题
diff --git a/sop-auth/pom.xml b/sop-auth/pom.xml
index d5b56ffa..fa46dd66 100644
--- a/sop-auth/pom.xml
+++ b/sop-auth/pom.xml
@@ -26,7 +26,7 @@
com.gitee.sop
sop-service-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
diff --git a/sop-common/pom.xml b/sop-common/pom.xml
index 89c70b7d..39a33e38 100644
--- a/sop-common/pom.xml
+++ b/sop-common/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.gitee.sop
sop-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
pom
diff --git a/sop-common/sop-bridge-gateway/pom.xml b/sop-common/sop-bridge-gateway/pom.xml
index 078a0d9c..5c1465bd 100644
--- a/sop-common/sop-bridge-gateway/pom.xml
+++ b/sop-common/sop-bridge-gateway/pom.xml
@@ -5,11 +5,11 @@
sop-common
com.gitee.sop
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
../pom.xml
4.0.0
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
sop-bridge-gateway
@@ -17,7 +17,7 @@
com.gitee.sop
sop-gateway-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
diff --git a/sop-common/sop-bridge-zuul/pom.xml b/sop-common/sop-bridge-zuul/pom.xml
index 4787ab59..efd0927e 100644
--- a/sop-common/sop-bridge-zuul/pom.xml
+++ b/sop-common/sop-bridge-zuul/pom.xml
@@ -5,11 +5,11 @@
sop-common
com.gitee.sop
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
../pom.xml
4.0.0
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
sop-bridge-zuul
@@ -17,7 +17,7 @@
com.gitee.sop
sop-gateway-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
diff --git a/sop-common/sop-gateway-common/pom.xml b/sop-common/sop-gateway-common/pom.xml
index 5a1e11ca..bb26587d 100644
--- a/sop-common/sop-gateway-common/pom.xml
+++ b/sop-common/sop-gateway-common/pom.xml
@@ -5,11 +5,11 @@
com.gitee.sop
sop-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
../pom.xml
sop-gateway-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
jar
sop-gateway-common
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java
index eff18885..4e6f6654 100644
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java
+++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java
@@ -80,15 +80,16 @@ public class IndexFilter implements WebFilter {
if (request.getMethod() == HttpMethod.POST) {
ServerRequest serverRequest = ServerWebExchangeUtil.createReadBodyRequest(exchange);
// 读取请求体中的内容
- Mono> modifiedBody = serverRequest.bodyToMono(String.class)
- .flatMap(body -> {
+ Mono> modifiedBody = serverRequest.bodyToMono(byte[].class)
+ .flatMap(data -> {
+ String body = new String(data, SopConstants.CHARSET_UTF8);
// 构建ApiParam
ApiParam apiParam = ServerWebExchangeUtil.getApiParam(exchange, body);
// 签名验证
doValidate(exchange, apiParam);
- return Mono.just(body);
+ return Mono.just(data);
});
- BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, (Class) String.class);
+ BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, (Class)byte[].class);
HttpHeaders headers = new HttpHeaders();
headers.putAll(exchange.getRequest().getHeaders());
@@ -130,7 +131,9 @@ public class IndexFilter implements WebFilter {
validator.validate(apiParam);
this.afterValidate(exchange, apiParam);
} catch (ApiException e) {
- log.error("验证失败,ip:{}, params:{}, errorMsg:{}", apiParam.fetchIp(), apiParam.toJSONString(), e.getMessage());
+ log.error("验证失败,url:{}, ip:{}, params:{}, errorMsg:{}",
+ exchange.getRequest().getURI().toString(),
+ apiParam.fetchIp(), apiParam.toJSONString(), e.getMessage());
ServerWebExchangeUtil.setThrowable(exchange, e);
}
}
diff --git a/sop-common/sop-service-common/pom.xml b/sop-common/sop-service-common/pom.xml
index 7f6343dd..7aa25523 100644
--- a/sop-common/sop-service-common/pom.xml
+++ b/sop-common/sop-service-common/pom.xml
@@ -6,11 +6,11 @@
com.gitee.sop
sop-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
../pom.xml
sop-service-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
jar
sop-service-common
diff --git a/sop-example/sop-book/sop-book-web/pom.xml b/sop-example/sop-book/sop-book-web/pom.xml
index 57a9ed0a..50b40b53 100644
--- a/sop-example/sop-book/sop-book-web/pom.xml
+++ b/sop-example/sop-book/sop-book-web/pom.xml
@@ -28,7 +28,7 @@
com.gitee.sop
sop-service-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
com.gitee.sop
diff --git a/sop-example/sop-easyopen/pom.xml b/sop-example/sop-easyopen/pom.xml
index e9ef1f8d..f1810e84 100644
--- a/sop-example/sop-easyopen/pom.xml
+++ b/sop-example/sop-easyopen/pom.xml
@@ -29,7 +29,7 @@
com.gitee.sop
sop-service-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
diff --git a/sop-example/sop-story/sop-story-web/pom.xml b/sop-example/sop-story/sop-story-web/pom.xml
index 286d149d..9da1e54b 100644
--- a/sop-example/sop-story/sop-story-web/pom.xml
+++ b/sop-example/sop-story/sop-story-web/pom.xml
@@ -28,7 +28,7 @@
com.gitee.sop
sop-service-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
com.gitee.sop
diff --git a/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/FileUploadDemoController.java b/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/FileUploadDemoController.java
index e5854db1..e25608b9 100644
--- a/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/FileUploadDemoController.java
+++ b/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/FileUploadDemoController.java
@@ -14,8 +14,10 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
+import java.io.File;
import java.io.IOException;
import java.util.Collection;
+import java.util.Optional;
/**
* 演示文件上传
@@ -70,6 +72,25 @@ public class FileUploadDemoController {
return result;
}
+ @ApiMapping(value = "demo.file.upload3")
+ public FileUploadResult file3(FileUploadParam2 param, HttpServletRequest request) {
+ System.out.println(param.getRemark());
+ FileUploadResult result = new FileUploadResult();
+ // 获取上传的文件
+ Collection uploadFiles = UploadUtil.getUploadFiles(request);
+ Optional first = uploadFiles.stream().findFirst();
+ if (first.isPresent()) {
+ MultipartFile multipartFile = first.get();
+ try {
+ String path = System.getProperty("user.dir");
+ multipartFile.transferTo(new File(path + "/img_"+System.currentTimeMillis()+".png"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
private FileUploadResult.FileMeta buildFileMeta(MultipartFile multipartFile) {
// 文件名
String fileName = multipartFile.getOriginalFilename();
diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml
index e3595ace..878516d8 100644
--- a/sop-gateway/pom.xml
+++ b/sop-gateway/pom.xml
@@ -34,7 +34,7 @@
com.gitee.sop
sop-bridge-gateway
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT
diff --git a/sop-test/src/main/resources/img.png b/sop-test/src/main/resources/img.png
new file mode 100644
index 00000000..821d3a66
Binary files /dev/null and b/sop-test/src/main/resources/img.png differ
diff --git a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java
index 5f7c4d1d..a34f26de 100644
--- a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java
+++ b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java
@@ -239,6 +239,29 @@ public class AllInOneTest extends TestBase {
client.execute(requestBuilder);
}
+ /**
+ * 演示文件上传
+ */
+ public void testFile3() {
+ Client client = new Client(url, appId, privateKey);
+ String root = System.getProperty("user.dir");
+ Client.RequestBuilder requestBuilder = new Client.RequestBuilder()
+ .method("demo.file.upload3")
+ .version("1.0")
+ .bizContent(new BizContent().add("remark", "test file upload"))
+ // 添加文件
+ .addFile("image", new File(root + "/src/main/resources/img.png"))
+ .callback((requestInfo, responseData) -> {
+ System.out.println(responseData);
+ JSONObject jsonObject = JSON.parseObject(responseData);
+ JSONObject data = jsonObject.getJSONObject(requestInfo.getDataNode());
+ Assert.assertEquals(data.getString("code"), "10000");
+ })
+ ;
+
+ client.execute(requestBuilder);
+ }
+
/**
* 下载文件
*/
diff --git a/sop-website/pom.xml b/sop-website/pom.xml
index 883372af..19beadad 100644
--- a/sop-website/pom.xml
+++ b/sop-website/pom.xml
@@ -35,7 +35,7 @@
com.gitee.sop
sop-gateway-common
- 3.1.1-SNAPSHOT
+ 3.1.2-SNAPSHOT