отправка файла с модификацией 2, имя файла которого содержит персидский символ - PullRequest
2 голосов
/ 05 марта 2019

Я отправляю multipart запросов с модификацией, и она отлично работает. но когда мое имя файла содержит персидский символ, мое приложение падает, и я получаю эту ошибку:

java.lang.IllegalArgumentException: неожиданный символ 0x62f при 35 дюймах Значение Content-Disposition: форма-данные; Name = "фото"; имя файла = "دوچرخه. JPG"

вот как я отправляю свой составной запрос:

    File imageFile = new File(imagePath);

    ProgressRequestBody fileBody = new ProgressRequestBody(imageFile, this);
    MultipartBody.Part filePart = MultipartBody.Part.createFormData("photo", imageFile.getName(), fileBody);

    RetroInterface retroInterface = RetrofitClientInstance.getRetrofitInstance().create(RetroInterface.class);
    Call<SendFileResponse> call = retroInterface.sendPhoto(token, myHashmap, filePart);

как я могу исправить эту проблему?!

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Мое не идеальное решение, потому что оно может изменить некоторые символы, это поставить URLEncoder.encode(file.name, "utf-8") вместо простого имени.

0 голосов
/ 05 марта 2019

Хотя это всего лишь предложение, но в качестве обходного пути вы пытаетесь переименовать файл в id (метка времени / что-нибудь еще) для имени файла и добавить поле имени, которое будет содержать фактическое имя, если файл ...

public class Object {
  private String filename;
  private File actualFile;
}

Таким образом, при последующем извлечении вы всегда можете иметь ссылку на нужный файл.

...