You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/06/11 08:29:10 UTC

[incubator-servicecomb-java-chassis] 01/04: [SCB-203] avoid servlet can not read chinese file name

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 28c9ddb0c173718338922a7417088952d19a62e8
Author: wujimin <wu...@huawei.com>
AuthorDate: Tue Jun 5 17:16:50 2018 +0800

    [SCB-203] avoid servlet can not read chinese file name
---
 .../rest/codec/param/RestClientRequestImpl.java    |  2 +-
 .../codec/param/TestRestClientRequestImpl.java     | 27 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/RestClientRequestImpl.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/RestClientRequestImpl.java
index 505d84e..073032b 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/RestClientRequestImpl.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/RestClientRequestImpl.java
@@ -103,7 +103,7 @@ public class RestClientRequestImpl implements RestClientRequest {
     request.setChunked(true);
 
     String boundary = "boundary" + UUID.randomUUID().toString();
-    putHeader(CONTENT_TYPE, MULTIPART_FORM_DATA + "; boundary=" + boundary);
+    putHeader(CONTENT_TYPE, MULTIPART_FORM_DATA + "; charset=UTF-8; boundary=" + boundary);
 
     genBodyForm(boundary);
 
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestRestClientRequestImpl.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestRestClientRequestImpl.java
index d14c10e..137063f 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestRestClientRequestImpl.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestRestClientRequestImpl.java
@@ -16,7 +16,9 @@
  */
 package org.apache.servicecomb.common.rest.codec.param;
 
+import java.util.HashMap;
 import java.util.Map;
+import java.util.UUID;
 
 import javax.servlet.http.Part;
 import javax.ws.rs.core.MediaType;
@@ -141,4 +143,29 @@ public class TestRestClientRequestImpl {
     Map<String, Part> uploads = Deencapsulation.getField(restClientRequest, "uploads");
     Assert.assertTrue(uploads.isEmpty());
   }
+
+  @Test
+  public void doEndWithUpload() {
+    Map<String, String> headers = new HashMap<>();
+    new MockUp<HttpClientRequest>(request) {
+      @Mock
+      HttpClientRequest putHeader(String name, String value) {
+        headers.put(name, value);
+        return request;
+      }
+    };
+
+    UUID uuid = new UUID(0, 0);
+    new Expectations(UUID.class) {
+      {
+        UUID.randomUUID();
+        result = uuid;
+      }
+    };
+    RestClientRequestImpl restClientRequest = new RestClientRequestImpl(request, null, null);
+    restClientRequest.doEndWithUpload();
+
+    Assert.assertEquals("multipart/form-data; charset=UTF-8; boundary=boundary00000000-0000-0000-0000-000000000000",
+        headers.get(HttpHeaders.CONTENT_TYPE.toString()));
+  }
 }

-- 
To stop receiving notification emails like this one, please contact
liubao@apache.org.