Java Programming

Upload File Spring Boot MVC

WebConfig

@Configuration
public class WebConfig implements WebMvcConfigurer{
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**").addResourceLocations("file:" + System.getProperty("user.dir") + "/images/");
    }
}

Config Path

Open file application.properties and insert code following

# Thư mục lưu file upload
file.upload-dir=images
# Giới hạn dung lượng upload (ví dụ: 10MB)
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

Upload file

Create UploadController.java and implement upload file

@Controller
public class UploadController {
    @Value("${file.upload-dir}")
    private String uploadDir;

    @PostMapping("/upload")
    String upload(@RequestParam("f") MultipartFile f, Model model){
        Path uploadPath = Paths.get(uploadDir).toAbsolutePath().normalize();
        Path targetPath = uploadPath.resolve(f.getOriginalFilename());
        try {
            f.transferTo(targetPath.toFile());
            model.addAttribute("imageUrl", f.getOriginalFilename());
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();
        } 
        return "upload/index";
    }
}