Как управлять загрузкой динамического количества файлов с OkHttp v3, я уже реализовал с более старой версией OkHttp, которая была compile 'com.squareup.okhttp:okhttp:2.6.0'
Есть некоторые изменения в классе. Теперь моделируются модели Form и Multipart. Они заменили непрозрачный FormEncodingBuilder более мощным компилятором FormBody и FormBody.Builder. Аналогичным образом они обновили MultipartBuilder в MultipartBody, MultipartBody.Part и MultipartBody.Builder.
ниже код имеет более старую версию
final MediaType MEDIA_TYPE = MediaType.parse(AppConstant.arrImages.get(i).getMediaType());
//If you can have multiple file types, set it in ArrayList
MultipartBuilder buildernew = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("title", title); //Here you can add the fix number of data.
for (int i = 0; i < AppConstants.arrImages.size(); i++) { //loop to add dynamic number of files.
File f = new File(FILE_PATH,TEMP_FILE_NAME + i + ".png");
if (f.exists()) {
buildernew.addFormDataPart(TEMP_FILE_NAME + i, TEMP_FILE_NAME + i + FILE_EXTENSION, RequestBody.create(MEDIA_TYPE, f));
}
}
RequestBody requestBody = buildernew.build();
//Build the object of MultipartBuilder and get object of RequestBody.
Но теперь для OkHttp
<version>3.0.1</version>
реализация кода для загрузки файла - это что-то вроде кода ниже (источник)
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("title", "Square Logo")
.addFormDataPart("image", "logo-square.png",
RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png")))
.build();
Я пробовал ту же логику с MultipartBody
, но не нашел никакого плодотворного решения.
Или мне нужно реализовать те же if else
для разных случаев. (Это невозможно)