android - Enviar archivo al servidor a través de retrofit2 como objeto
(1)
Para encontrar cómo enviar su archivo al servidor a través de Retroit, los siguientes pasos pueden resolver su problema:
1- Instalar PostMan .
2- En PostMan seleccione
Post
y pegue
URL
luego vaya a la pestaña
Body
y elija
form-data
.
3- La parte de In
Key
escribe el nombre del archivo del servidor y el tipo de conjunto de partes de In
Value
como
File
y sube el archivo deseado.
4- Haga clic en Enviar y luego en Generar código .
5- Ahora tienes algo como lo siguiente:
6- Ahora solo queda un paso, ve a tu servicio de actualización y pega información como (en mi caso quiero subir
audio.mp3
):
@Multipart
@POST("app/")
Call<JResponse> upload(@Part("file/"; filename=/"audio.mp3/" ") RequestBody file);
Y el cuerpo de la solicitud sería algo como:
File file = new File("YOUR_PATH");
RequestBody temp = RequestBody.create(MediaType.parse("multipart/form-data"), file);
Use this patrón y envíelo con:
ServiceHelper.getInstance().sendAudio(temp).enqueue(new Callback<JResponse>() {
@Override
public void onResponse(Call<JResponse> call, Response<JResponse> response) {
Log.e("test", "onResponse: tst");
}
@Override
public void onFailure(Call<JResponse> call, Throwable t) {
Log.e("test", "onResponse: tst");
}
});
Quiero enviar un
archivo de audio
a un servidor con
retrofit2
.
Seguí
this
tutorial pero el archivo no está en el formato que acepta el servidor.
Basado en este tutorial probé lo siguiente:
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part audio = MultipartBody.Part.createFormData("file", "file", requestBody);
y la interfaz:
@Headers("Content-Type: application/json")
@Multipart
@POST("app/")
Call<JResponse> upload(@Part("file") RequestBody file);
Pero, el
file:
atributo no se envía.
(Si cambio
@Part
con
@Body
, existe pero hay otro problema)
¿Quiero saber cómo enviar un archivo en el siguiente formato?
¿Debo convertir el archivo de audio al formato
base64
?
{ ''file'' : audio_file }