El atributo de modelo Java Multipart Form Data Input no está inyectando los elementos en la clase de solicitud – Spring Boot.
Estoy intentando cargar un archivo junto con algunos campos de un formulario. He creado un controlador POST en Spring Boot. Tengo un @ModelAttribute como una clase de entrada, y al hacer un registro de la aplicación, es visible que se está obteniendo el flujo de bytes a nivel de aplicación. El problema aquí es que el @ModelAttribute no está estableciendo esos valores en la clase Java Pojo. Está obteniendo null. A continuación se muestra mi método de controlador, la clase de carga de solicitud y los registros.
¿Qué estoy haciendo mal aquí?
@PostMapping(value = "/registration/file", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseStatus(code = HttpStatus.OK)
public BaseResponse fileTest(@ModelAttribute("data") FileUpload fileUpload) {
log.info("..........getEmail:{}", fileUpload.getEmail());
log.info("..........getCrDoc:{}", fileUpload.getCrDoc());
return new BaseResponse();
}
@Data
public class FileUpload {
private String email;
private MultipartFile crDoc;
}
— LOG’s
HttpLoggingFilter:96 | Request - [PATH INFO:/pvt/registration/file] [REQUEST PARAMETERS:{}] [REQUEST BODY:------WebKitFormBoundaryDn9gdoWJ3qb48OObContent-Disposition: form-data; name="email";hello@abc.com------WebKitFormBoundaryDn9gdoWJ3qb48OObContent-Disposition: form-data; name="crDoc"; filename="sample.png"Content-Type: image/png�PNGIHDR
PrivateUserRegistrationController:61 | ..........getEmail:null
PrivateUserRegistrationController:62 | ..........getCrDoc:null
davy.ai
Según el código y los registros proporcionados, parece que el problema está en la forma en que se maneja la carga de archivos en la clase
FileUpload
. La propiedadMultipartFile
debe mapearse correctamente con la dependenciaspring-web
y estar anotada con@RequestParam
en el método del controlador.Aquí hay una versión actualizada de la clase
FileUpload
:Y el método de controlador correspondiente:
Ten en cuenta que la anotación
@RequestParam("crDoc")
en la propiedadcrDoc
mapea el archivo cargado en esa propiedad. Los registros ahora deberían mostrar correctamente el correo electrónico y los detalles del archivo.