receive mvc multipartfile form example java web-services file-upload spring-boot multifile-uploader

java - mvc - thymeleaf file upload example



La solicitud fue rechazada porque no se encontró un límite de varias partes en Springboot (6)

Estaba teniendo el mismo problema al hacer una solicitud POST de Postman y más tarde pude resolver el problema configurando un tipo de contenido personalizado con un valor de límite establecido junto con este así.

Pensé que las personas pueden encontrarse con un problema similar y, por lo tanto, estoy compartiendo mi solución.

Como estoy intentando esto con el arranque de primavera y los servicios web con complementos de postman chrome.

En postman content-type="multipart/form-data" y obtengo la siguiente excepción.

HTTP Status 500 - Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

En el controlador, especifiqué el siguiente código

@ResponseBody @RequestMapping(value = "/file", headers = "Content-Type= multipart/form-data", method = RequestMethod.POST) public String upload(@RequestParam("name") String name, @RequestParam(value = "file", required = true) MultipartFile file) //@RequestParam ()CommonsMultipartFile[] fileUpload { // @RequestMapping(value="/newDocument", , method = RequestMethod.POST) if (!file.isEmpty()) { try { byte[] fileContent = file.getBytes(); fileSystemHandler.create(123, fileContent, name); return "You successfully uploaded " + name + "!"; } catch (Exception e) { return "You failed to upload " + name + " => " + e.getMessage(); } } else { return "You failed to upload " + name + " because the file was empty."; } }

Aquí especifico el código del manejador de archivos

public String create(int jonId, byte[] fileContent, String name) { String status = "Created file..."; try { String path = env.getProperty("file.uploadPath") + name; File newFile = new File(path); newFile.createNewFile(); BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(newFile)); stream.write(fileContent); stream.close(); } catch (IOException ex) { status = "Failed to create file..."; Logger.getLogger(FileSystemHandler.class.getName()).log(Level.SEVERE, null, ex); } return status; }


problema no está en su código. problema en su solicitud. no está recibiendo ningún límite en la solicitud de varias partes.


El "Postman - REST Client" no es adecuado para realizar acciones posteriores con la configuración del tipo de contenido. Puede intentar usar "Advanced REST client" u otros.

Además, los encabezados fueron reemplazados por los consumos y se producen desde Spring 3.1 M2, consulte https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements . Y puede usar directamente produces = MediaType.MULTIPART_FORM_DATA_VALUE .


El problema es que está configurando el Tipo de contenido usted mismo, déjelo en blanco. Google Chrome lo hará por ti. El tipo de contenido multiparte necesita conocer el límite del archivo, y cuando elimina el tipo de contenido, el cartero lo hará automáticamente.


Desmarcar el tipo de contenido en el cartero y cartero detectará automáticamente el tipo de contenido en función de su entrada en el tiempo de ejecución.

Muestra


Esto funcionó para mí: cargando un archivo a través de Postman, a una aplicación web de back-end SpringMVC:

Backend:

Cartero: