Skip to content

Commit d0be477

Browse files
committed
support filename in upload options. close response objects in http44
1 parent 1693eca commit d0be477

File tree

6 files changed

+28
-11
lines changed

6 files changed

+28
-11
lines changed

cloudinary-android/src/main/java/com/cloudinary/android/MultipartUtility.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,18 @@ public void addFormField(String name, String value) {
8484
* a File to be uploaded
8585
* @throws IOException
8686
*/
87-
public void addFilePart(String fieldName, File uploadFile) throws IOException {
88-
String fileName = uploadFile.getName();
87+
public void addFilePart(String fieldName, File uploadFile, String fileName) throws IOException {
88+
if (fileName == null) fileName = uploadFile.getName();
8989
FileInputStream inputStream = new FileInputStream(uploadFile);
9090
addFilePart(fieldName, inputStream, fileName);
9191
}
92+
93+
public void addFilePart(String fieldName, File uploadFile) throws IOException {
94+
addFilePart(fieldName, uploadFile, "file");
95+
}
9296

9397
public void addFilePart(String fieldName, InputStream inputStream, String fileName) throws IOException {
98+
if (fileName == null) fileName = "file";
9499
writer.append("--" + boundary).append(LINE_FEED);
95100
writer.append("Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + fileName + "\"").append(LINE_FEED);
96101
writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(fileName)).append(LINE_FEED);

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,15 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
6565
if (file instanceof String && !((String) file).matches("ftp:.*|https?:.*|s3:.*|data:[^;]*;base64,([a-zA-Z0-9/+\n=]+)")) {
6666
file = new File((String) file);
6767
}
68+
String filename = (String) options.get("filename");
6869
if (file instanceof File) {
69-
multipart.addFilePart("file", (File) file);
70+
multipart.addFilePart("file", (File) file, filename);
7071
} else if (file instanceof String) {
7172
multipart.addFormField("file", (String) file);
7273
} else if (file instanceof InputStream) {
73-
multipart.addFilePart("file", (InputStream) file);
74+
multipart.addFilePart("file", (InputStream) file, filename);
7475
} else if (file instanceof byte[]) {
75-
multipart.addFilePart("file", new ByteArrayInputStream((byte[]) file));
76+
multipart.addFilePart("file", new ByteArrayInputStream((byte[]) file), filename);
7677
}
7778
HttpURLConnection connection = multipart.execute();
7879
int code;

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,14 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
8484
if (file instanceof String && !((String) file).matches("ftp:.*|https?:.*|s3:.*|data:[^;]*;base64,([a-zA-Z0-9/+\n=]+)")) {
8585
file = new File((String) file);
8686
}
87+
String filename = (String) options.get("filename");
8788
if (file instanceof File) {
88-
multipart.addPart("file", new FileBody((File) file));
89+
multipart.addPart("file", new FileBody((File) file, filename, "application/octet-stream", null));
8990
} else if (file instanceof String) {
9091
multipart.addPart("file", new StringBody((String) file, utf8));
9192
} else if (file instanceof byte[]) {
92-
multipart.addPart("file", new ByteArrayBody((byte[]) file, "file"));
93+
if (filename == null) filename = "file";
94+
multipart.addPart("file", new ByteArrayBody((byte[]) file, filename));
9395
} else if (file == null) {
9496
// no-problem
9597
} else {

cloudinary-http42/src/test/java/com/cloudinary/test/ApiTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
import org.junit.Test;
88

9-
import org.apache.http.conn.ConnectTimeoutException;
9+
import java.net.SocketTimeoutException;
1010

1111
public class ApiTest extends AbstractApiTest {
12-
@Test(expected = ConnectTimeoutException.class)
12+
@Test(expected = SocketTimeoutException.class)
1313
public void testTimeoutException() throws Exception {
1414
// should allow listing resources
1515
Map<String, Object> options = new HashMap<String, Object>();

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,15 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
9595
if (file instanceof String && !((String) file).matches("ftp:.*|https?:.*|s3:.*|data:[^;]*;base64,([a-zA-Z0-9/+\n=]+)")) {
9696
file = new File((String) file);
9797
}
98+
String filename = (String) options.get("filename");
9899
if (file instanceof File) {
99-
multipart.addBinaryBody("file", (File) file);
100+
if (filename == null) filename = ((File) file).getName();
101+
multipart.addBinaryBody("file", (File) file, ContentType.APPLICATION_OCTET_STREAM, filename);
100102
} else if (file instanceof String) {
101103
multipart.addTextBody("file", (String) file);
102104
} else if (file instanceof byte[]) {
103-
multipart.addBinaryBody("file", (byte[]) file, ContentType.APPLICATION_OCTET_STREAM, "file");
105+
if (filename == null) filename = "file";
106+
multipart.addBinaryBody("file", (byte[]) file, ContentType.APPLICATION_OCTET_STREAM, filename);
104107
} else if (file == null) {
105108
// no-problem
106109
} else {

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
@@ -413,5 +413,11 @@ public void testUnsignedUpload() throws Exception {
413413
assertTrue(result.get("public_id").toString().matches("^upload_folder\\/[a-z0-9]+$"));
414414
cloudinary.api().deleteUploadPreset(preset.get("name").toString(), ObjectUtils.emptyMap());
415415
}
416+
417+
@Test
418+
public void testFilenameOption() throws Exception {
419+
Map result = cloudinary.uploader().upload(SRC_TEST_IMAGE, ObjectUtils.asMap("filename", "emanelif"));
420+
assertEquals("emanelif", result.get("original_filename"));
421+
}
416422

417423
}

0 commit comments

Comments
 (0)