¿Necesita ayuda en el archivo de imagen múltiple POST usando retrofit?
¿Cómo agregar múltiples imágenes / archivos en un mismo parámetro junto con otros datos de texto usando retrofit?
Single image is uploading perfectly using following interface @Multipart @POST("/users/updateProfile/") public void updateProfileWithImage( @Part("user_id") TypedString first_name, @Part ("image") TypedFile image, Callback<WebResponse> callback);
- Retrofit - Múltiples puntos finales con el mismo RestAdapter
- ¿Cómo puedo enviar una matriz de objetos en un POST retrofit?
- ¿Hay alguna manera de agregar parámetros de consulta a cada solicitud con Retrofit 2?
- Retrofit API para recuperar una imagen png
- Buen enfoque para reintentar manualmente solicitudes en Retrofit Android
- Cómo establecer dinámicamente encabezados en Retrofit (Android)
- Retrofit: ¿agrega el parámetro runtime a la interfaz?
- ¿Debo usar retrofit con un singleton?
- Retrofit callback obtener cuerpo de respuesta
- Reemplazos de reemplazo: reemplazo en toda la ruta (incluyendo /)
- Retrofit: cómo arreglar "sólo se permite un método http. Encontrado: obtener y obtener "?
- Manejo de errores personalizado con Retrofit
- Cómo obtener JSON de objeto RetrofitError utilizando Retrofit
Puede utilizar el @MultiPart Post con @PartMap como parámetro
Map<String, TypedFile> files = new HashMap<String, TypedFile>(); files.put("my file number one", new TypedFile("image/jpg", new File(filename))); files.put("my file number two", new TypedFile("image/jpg", new File(filename))); apiInterface.updateProfileWithImage("first name here", files); private interface ApiInterface{ @Multipart @POST("/users/updateProfile/") Response updateProfileWithImage( @Part("user_id") TypedString first_name, @PartMap Map<String,TypedFile> Files ); }
Retrofit 2.0 + OkHttp 3
Declaración de interfaz:
@POST("postpath") Call<Void> upload(@Body MultipartBody filePart);
Creación de MultiPartBody
:
MultipartBody.Builder requestBodyBuilder = new MultipartBody.Builder() .setType(MultipartBody.FORM);
Luego para cada archivo (también puede agregar campos personalizados)
requestBodyBuilder.addFormDataPart("extraImage[]", "photo.jpg", RequestBody.create(MediaType.parse("image/jpeg"), byteArrayOrFile));
y finalmente
api.upload(requestBodyBuilder.build());
PS puede agregar campos de formulario personalizados (por ejemplo, client.name
) al mismo formulario con
requestBodyBuilder.addFormDataPart("client[name]", null, RequestBody.create(MediaType.parse("text/plain"), name))
o
requestBodyBuilder.addFormDataPart("client[name]", name))
Retrofit 1.9 :
Puede utilizar MultipartTypedOutput para publicar el número variable de parámetros de varias partes.
Además de la respuesta de François, para publicar varias imágenes con el mismo / repetición de nombre de campo (como un array) en retrofit, puede utilizar MultipartTypedOutput
Firma del método:
@POST("/postpath") SomeResponse upload(@Body MultipartTypedOutput output);
Uso:
MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput(); multipartTypedOutput.addPart("mainImage", new TypedFile("image/jpeg", mainImage)); multipartTypedOutput.addPart("extraImage[]", new TypedFile("image/jpeg", file1)); multipartTypedOutput.addPart("extraImage[]", new TypedFile("image/jpeg", file2)); upload(multipartTypedOutput);
Corchetes
Tenga en cuenta que algunos frameworks del lado del servidor (Rails) normalmente requieren corchetes (es decir, extraImage[]
lugar de extraImage
), otros no (Spring MVC).
- PhoneGap 3.0 Android build Error al ejecutar el comando: ant jar
- ListView onClickListener () no funciona después de agregar RadioButton