Skip to content

Commit 6d2f9c9

Browse files
authored
Fix upload with unicode characters
1 parent b9b139f commit 6d2f9c9

File tree

7 files changed

+15
-1
lines changed

7 files changed

+15
-1
lines changed

cloudinary-http42/src/main/java/com/cloudinary/http42/UploaderStrategy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.IOException;
2424
import java.io.InputStream;
2525
import java.nio.charset.Charset;
26+
import java.nio.charset.StandardCharsets;
2627
import java.util.Collection;
2728
import java.util.Map;
2829

@@ -71,7 +72,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
7172

7273
Charset utf8 = Charset.forName("UTF-8");
7374

74-
MultipartEntity multipart = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
75+
MultipartEntity multipart = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, StandardCharsets.UTF_8);
7576
// Remove blank parameters
7677
for (Map.Entry<String, Object> param : params.entrySet()) {
7778
if (param.getValue() instanceof Collection) {

cloudinary-http43/src/main/java/com/cloudinary/http43/UploaderStrategy.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.File;
44
import java.io.IOException;
55
import java.io.InputStream;
6+
import java.nio.charset.StandardCharsets;
67
import java.util.Collection;
78
import java.util.Map;
89

@@ -87,6 +88,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
8788

8889
MultipartEntityBuilder multipart = MultipartEntityBuilder.create();
8990
multipart.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
91+
multipart.setCharset(StandardCharsets.UTF_8);
9092
ContentType contentType = ContentType.MULTIPART_FORM_DATA.withCharset(MIME.UTF8_CHARSET);
9193
// Remove blank parameters
9294
for (Map.Entry<String, Object> param : params.entrySet()) {

cloudinary-http44/src/main/java/com/cloudinary/http44/UploaderStrategy.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.io.IOException;
55
import java.io.InputStream;
66
import java.lang.reflect.Field;
7+
import java.nio.charset.StandardCharsets;
78
import java.util.Collection;
89
import java.util.Map;
910

@@ -88,6 +89,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
8889

8990
MultipartEntityBuilder multipart = MultipartEntityBuilder.create();
9091
multipart.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
92+
multipart.setCharset(StandardCharsets.UTF_8);
9193
ContentType contentType = ContentType.MULTIPART_FORM_DATA.withCharset(MIME.UTF8_CHARSET);
9294
// Remove blank parameters
9395
for (Map.Entry<String, Object> param : params.entrySet()) {

cloudinary-http45/src/main/java/com/cloudinary/http45/UploaderStrategy.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.io.File;
2323
import java.io.IOException;
2424
import java.io.InputStream;
25+
import java.nio.charset.StandardCharsets;
2526
import java.util.Collection;
2627
import java.util.Map;
2728

@@ -84,6 +85,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
8485

8586
MultipartEntityBuilder multipart = MultipartEntityBuilder.create();
8687
multipart.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
88+
multipart.setCharset(StandardCharsets.UTF_8);
8789
ContentType contentType = ContentType.MULTIPART_FORM_DATA.withCharset(MIME.UTF8_CHARSET);
8890
// Remove blank parameters
8991
for (Map.Entry<String, Object> param : params.entrySet()) {

cloudinary-test-common/src/main/java/com/cloudinary/test/AbstractUploaderTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,12 @@ private void addToDeleteList(String type, String id) {
799799
ids.add(id);
800800
}
801801

802+
@Test
803+
public void testUploadLocalUnicodeFilename() throws Exception {
804+
Map result = cloudinary.uploader().upload(HEBREW_PDF, asMap("resource_type", "raw"));
805+
assertTrue(((String)result.get("public_id")).contains(".docx"));
806+
}
807+
802808
@Test
803809
public void testUploadFolderDecoupling() {
804810
//TODO: Need to build a unit testing infrastructure

cloudinary-test-common/src/main/java/com/cloudinary/test/MockableTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
public class MockableTest {
1717

18+
public static final String HEBREW_PDF = "../cloudinary-test-common/src/main/resources/אבג.docx";
1819
public static final String SRC_TEST_IMAGE = "../cloudinary-test-common/src/main/resources/old_logo.png";
1920
public static final String SRC_TEST_VIDEO = "http://res.cloudinary.com/demo/video/upload/dog.mp4";
2021
public static final String SRC_TEST_RAW = "../cloudinary-test-common/src/main/resources/docx.docx";
12 KB
Binary file not shown.

0 commit comments

Comments
 (0)