HTML pages can configure files to be uploaded using as enctype attribute "multipart/form-data". Out of the box, the org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration already has support to enable multi-part upload. So let's see an example HTML page with a form with enctype="multipart/form-data" to upload a file:

<form action="uploadFile" th:action="@{/uploadFile}"
        method="post" enctype="multipart/form-data">
  <input type="file" name="myFile" />
  <input type="submit" />
</form>

In order to handle the request, we can implement a Controller as shown in this example:

@PostMapping("/uploadFile")
public String handleFileUpload(@RequestParam("myFile") MultipartFile file)
{
    if (!file.isEmpty())
    {
        String name = file.getOriginalFilename();
        try
        {
            byte[] bytes = file.getBytes();
            Files.write(new File(name).toPath(), bytes);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    return "redirect:/fileUpload";
}

Finally, we need to configure our Spring Boot application to enable Multipart file uploads, and set the maximum file size that can be uploaded. Open src/main/resources/application.properties file, and add the following configuration into it:

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=20MB
spring.servlet.multipart.file-size-threshold=5MB

Enjoy uploading Files with Spring Boot!

FREE WildFly Application Server - JBoss - Quarkus - Drools Tutorials