Loading

Quipoin Menu

Learn • Practice • Grow

spring / File Upload in Spring MVC
tutorial

File Upload in Spring MVC

Many applications need file upload – profile pictures, documents, attachments. Spring MVC makes file uploading simple with MultipartFile.

Step 1: Configure Multipart support (if using Spring Boot, it's auto-configured). For XML config:


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"/> <!-- 10MB -->
</bean>

Step 2: Create a model to hold file data


public class FileUpload {
private String description;
private MultipartFile file; // This will hold the uploaded file

// getters and setters
}

Step 3: Create controller for file upload


@Controller
public class FileUploadController {

// Show upload form
@GetMapping("/upload")
public String showUploadForm(Model model) {
model.addAttribute("fileUpload", new FileUpload());
return "upload-form";
}

// Handle file upload
@PostMapping("/upload")
public String handleFileUpload(
@ModelAttribute FileUpload fileUpload,
BindingResult bindingResult,
RedirectAttributes redirectAttributes) {

MultipartFile file = fileUpload.getFile();

if (file.isEmpty()) {
bindingResult.rejectValue("file", "error.file", "File cannot be empty");
return "upload-form";
}

try {
// Save file to disk or database
String fileName = file.getOriginalFilename();
String uploadDir = "uploads/";
File dest = new File(uploadDir + fileName);
file.transferTo(dest);

redirectAttributes.addFlashAttribute("message", "File uploaded successfully: " + fileName);

} catch (IOException e) {
bindingResult.rejectValue("file", "error.file", "File upload failed");
return "upload-form";
}

return "redirect:/upload-success";
}

@GetMapping("/upload-success")
public String uploadSuccess() {
return "upload-success";
}
}

Step 4: Create the upload form (upload-form.jsp or .html)


<form action="/upload" method="post" enctype="multipart/form-data">
<label>Description:</label>
<input type="text" name="description"/><br/>

<label>Choose file:</label>
<input type="file" name="file"/><br/>

<button type="submit">Upload</button>
</form>

Important:
  • Form must have enctype="multipart/form-data" for file uploads.
  • MultipartFile interface represents the uploaded file.
  • Use transferTo() to save the file to disk.
  • Always check if file is empty and handle exceptions.
Two Minute Drill
  • Use MultipartFile to handle file uploads in Spring MVC.
  • Form must have enctype="multipart/form-data".
  • Configure multipartResolver for file upload support.
  • transferTo() saves the file to disk.
  • Validate file size and type before processing.

Need more clarification?

Drop us an email at career@quipoinfotech.com