es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo consumir un archivo con un tipo de contenido de message/rfc822 en mi API REST en un MultipartFormData?

En mi aplicación Vue, tengo este input de archivo:

Los archivos seleccionados se pasan a mi método de carga:

public async uploadFiles(file: File) {

[...]
const formData = new FormData();
formData.append('fileName', file.name);
formData.append('file', file);
[...]
await axios.post('my-upload-url', formData);    

}

El registro de js antes de enviarlo:

El registro de red después de enviarlo:

Mi controlador Resteasy responde:

@POST
@Transactional
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadMultipartData(@MultipartForm @Valid MyDto dto) {
// dto.file -> mi archivo
}

El DTO:

public class MyDto {
@NotNull
@FormParam(“file”)
@PartType(MediaType.APPLICATION_OCTET_STREAM)
public InputStream file;
}

Cuando transfiero otros tipos de archivos (pdf, png, jpg, mp3, …) el archivo está en el InputStream del DTO como se esperaba. Sin embargo, cuando el archivo es un archivo .eml, el InputStream es nulo.

Actualización: cuando cambio el nombre del archivo de text.eml a test.txt, la carga funciona.

¿Por qué?

En otras palabras, ¿cómo consumir un archivo con un tipo de contenido de message/rfc822 en mi API REST? ¿Necesito un método separado que acepte este tipo de medio específico?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece ser que al transferir un archivo .eml, el archivo no se está pasando al InputStream del DTO. Al renombrar el archivo de text.eml a test.txt, la carga funciona.

    Parece ser que necesitas un método separado que acepte el tipo de medio específico message/rfc822 para poder consumir el archivo.

Comments are closed.