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

2

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

java.lang.IllegalArgumentException: неожиданный символ 0x62f при 35 в значении Content-Disposition: form-data; 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);

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

Теги:
retrofit2
multipart
retrofit

2 ответа

0

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

  • 0
    Будет ли это решение работать для любого имени файла, содержащего дикие символы?
0

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

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

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

  • 0
    Я использовал ваш путь, но я думаю, что должен быть правильный способ справиться с этим!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню