diff --git a/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml b/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml
index fdd569d144..37bcee0b8d 100644
--- a/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml
+++ b/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml
@@ -24,6 +24,11 @@
org.springframework.boot
spring-boot-starter-thymeleaf
+
+ org.projectlombok
+ lombok
+
+
org.springframework.boot
diff --git a/spring-web-modules/spring-mvc-forms-thymeleaf/src/main/java/com/baeldung/multipartupload/Employee.java b/spring-web-modules/spring-mvc-forms-thymeleaf/src/main/java/com/baeldung/multipartupload/Employee.java
new file mode 100644
index 0000000000..0bc600dd6a
--- /dev/null
+++ b/spring-web-modules/spring-mvc-forms-thymeleaf/src/main/java/com/baeldung/multipartupload/Employee.java
@@ -0,0 +1,16 @@
+package com.baeldung.multipartupload;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.web.multipart.MultipartFile;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Employee {
+ private String name;
+ private MultipartFile document;
+}
diff --git a/spring-web-modules/spring-mvc-forms-thymeleaf/src/main/java/com/baeldung/multipartupload/EmployeeController.java b/spring-web-modules/spring-mvc-forms-thymeleaf/src/main/java/com/baeldung/multipartupload/EmployeeController.java
new file mode 100644
index 0000000000..e02844233e
--- /dev/null
+++ b/spring-web-modules/spring-mvc-forms-thymeleaf/src/main/java/com/baeldung/multipartupload/EmployeeController.java
@@ -0,0 +1,49 @@
+package com.baeldung.multipartupload;
+
+import lombok.AllArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.multipart.MultipartFile;
+
+import static org.springframework.web.bind.annotation.RequestMethod.POST;
+
+@Controller
+@AllArgsConstructor
+public class EmployeeController {
+
+ private final EmployeeService employeeService;
+
+ @GetMapping(value = "/employee")
+ public String showEmployeeForm(Model model) {
+ model.addAttribute("employee", new Employee());
+ return "employee/createEmployeeForm";
+ }
+
+ @RequestMapping(path = "/employee", method = POST, consumes = { MediaType.MULTIPART_FORM_DATA_VALUE })
+ public String saveEmployee(@ModelAttribute Employee employee) {
+ employeeService.save(employee);
+ return "employee/success";
+ }
+
+ @RequestMapping(path = "/requestpart/employee", method = POST, consumes = { MediaType.MULTIPART_FORM_DATA_VALUE })
+ public ResponseEntity