Carregar número dinâmico de arquivos com okHttp3
Como gerenciar o upload de um número dinâmico de arquivos comOkHttp v3, eu já implementei com a versão mais antiga do OkHttp, que foicompile 'com.squareup.okhttp:okhttp:2.6.0'
Existem algumas alterações nos corpos da classe Form e Multipart agora são modelados. Eles substituíram o opaco FormEncodingBuilder pelo mais poderoso FormBody e FormBody.Builder. Da mesma forma, eles atualizaram o MultipartBuilder para MultipartBody, MultipartBody.Part e MultipartBody.Builder.
o código abaixo é da versão mais antiga
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.
Mas agora paraOkHttp
<version>3.0.1</version>
A implementação de código para upload de arquivos é semelhante ao código abaixo (fonte)
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();
Eu tentei a mesma lógica comMultipartBody
mas não encontrou nenhuma solução proveitosa. Ou preciso implementar o mesmoif else
para casos diferentes (o que não é viável)