Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

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

En mi aplicación Vue tengo esta entrada de archivo :

 <input type="file" multiple @input="handleFileInput" />

Los archivos seleccionados se pasan a mi este 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 js antes de enviarlo:

ingrese la descripción de la imagen aquí

El registro de red después de enviarlo:

ingrese la descripción de la imagen aquí

Mi controlador Resteasy responde:

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

El DTO:

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

Al transferir otros tipos de archivos (pdf, png, jpg, mp3, ...), el archivo se encuentra en el InputStream del DTO como se esperaba. Sin embargo, cuando el archivo es un archivo .eml, InputStream es nulo.

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

¿Por qué?

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

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Entonces, esto ciertamente tiene que ver con la forma en que su servidor maneja el archivo cargado. application/octet-stream simplemente representa un archivo binario genérico/desconocido. De RFC 2046 § 4.5.1:

El subtipo "octet-stream" se utiliza para indicar que un cuerpo contiene datos binarios arbitrarios.

La mayoría de las aplicaciones intentarán determinar el tipo MIME del archivo mirando la extensión de su archivo, pero tendrán problemas para determinarlo si la extensión es desconocida para ellos. Un archivo eml es solo un archivo de texto, lo que explica por qué al cambiar la extensión a txt funciona sin problemas. La forma más fácil de verificar esto es tomar un archivo txt simple y cambiar su extensión a unknown (por ejemplo) e intentar cargar ese archivo.

He configurado un ejemplo que replica exactamente el mismo escenario y, en este caso, el servidor no tiene problemas para leer el contenido del archivo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda