Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda