From f496b9dfd27ddc083e2620bdd5ff4a358264df4a Mon Sep 17 00:00:00 2001 From: Ashish Date: Wed, 16 Sep 2020 19:04:46 +0530 Subject: [PATCH] Fixes #3926, (Upload fails immediately. App freshly reset, fast Internet) (#3928) * Fixes #3926 * Encode media file name * Revert "Fixes #3926" This reverts commit b208b3d7fd22bd3b961f2ef5fc8a8a418e119213. * Encode fileName to support unicode characters in MultiPartUpload Refer https://stackoverflow.com/questions/58869988/unexpected-char-0x662-at-42-in-content-disposition-value-form-data-name-userf --- .../fr/free/nrw/commons/upload/UploadClient.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java index 936e27305..800c1f877 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java @@ -3,6 +3,8 @@ package fr.free.nrw.commons.upload; import android.content.Context; import android.net.Uri; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import org.wikipedia.csrf.CsrfTokenClient; import java.io.File; @@ -41,7 +43,15 @@ public class UploadClient { (bytesWritten, contentLength) -> notificationUpdater .onProgress(bytesWritten, contentLength)); - MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", filename, countingRequestBody); + MultipartBody.Part filePart; + try { + filePart = MultipartBody.Part + .createFormData("file", URLEncoder.encode(filename, "utf-8"), countingRequestBody); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + filePart = MultipartBody.Part + .createFormData("file", filename, countingRequestBody); + } RequestBody fileNameRequestBody = RequestBody.create(okhttp3.MultipartBody.FORM, filename); RequestBody tokenRequestBody; try {