android file-upload okhttp okhttp3

android - Cargue una cantidad dinámica de archivos con okHttp3



file-upload (1)

El constructor todavía existe y se puede usar para esto. Guárdelo en un local como lo estaba haciendo antes y modifíquelo en el ciclo:

MultipartBody.Builder buildernew = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("title", title); //Here you can add the fix number of data. for (int i = 0; i < AppConstants.arrImages.size(); i++) { 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)); } } MultipartBody requestBody = buildernew.build();

Cómo administrar la carga del número dinámico de archivos con OkHttp v3, ya he implementado con una versión anterior de OkHttp que fue compile ''com.squareup.okhttp:okhttp:2.6.0''

Hay algunos cambios en la forma de clase y los cuerpos de varias partes ahora están modelados. Han reemplazado el FormEncodingBuilder opaco con el más poderoso FormBody y FormBody.Builder combo. Del mismo modo, han actualizado MultipartBuilder en MultipartBody, MultipartBody.Part y MultipartBody.Builder.

El siguiente código es de versión anterior

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.

Pero ahora, para la implementación del código OkHttp <version>3.0.1</version> para la carga de archivos, es algo como el siguiente código ( fuente )

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();

Probé la misma lógica con MultipartBody pero no encontré ninguna solución fructífera. ¿O debo implementarlo if else para diferentes casos (lo cual no es factible)?