본문 바로가기
개발

[Java] SpringBoot 파일 업로드 & 다운로드

by 개발에대해 2025. 3. 24.

 

Spring Boot에서 파일 업로드 & 다운로드 구현 방법

 

웹 애플리케이션에서 파일 업로드 및 다운로드 기능은 사용자 편의성과 백엔드 연동에 있어 매우 중요한 요소입니다. 

Spring Boot는 이러한 기능을 간단한 설정과 코드만으로 빠르게 구현할 수 있는 프레임워크로, 

이번 글에서는 Spring Boot로 파일 업로드와 다운로드를 구현하는 방법을 실전 예제와 함께 소개합니다. 

 

1. 파일 업로드 구현 방법

Spring Boot에서는 MultipartFile 인터페이스를 통해 업로드된 파일을 쉽게 처리할 수 있습니다.

일반적으로 POST 요청과 함께 multipart/form-data 형식으로 서버에 전달됩니다. 


@PostMapping("/upload")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) throws IOException {
    String filePath = "uploads/" + file.getOriginalFilename();
    file.transferTo(new File(filePath));
    return ResponseEntity.ok("업로드 완료: " + file.getOriginalFilename());
}
  

 

2. 파일 다운로드 구현 방법

파일 다운로드는 서버에서 특정 경로의 파일을 읽어 사용자에게 바이너리로 전달하는 방식입니다. 

Spring에서는 ResponseEntity<Resource>를 사용해 쉽게 구현할 수 있습니다. 


@GetMapping("/download/{filename}")
public ResponseEntity<Resource> downloadFile(@PathVariable String filename) throws IOException {
    Path path = Paths.get("uploads").resolve(filename);
    Resource resource = new UrlResource(path.toUri());

    return ResponseEntity.ok()
        .contentType(MediaType.APPLICATION_OCTET_STREAM)
        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
        .body(resource);
}
  

 

비교: 업로드 vs 다운로드 구현 방식

항목 파일 업로드 파일 다운로드
HTTP 메서드 POST GET
컨트롤러 입력 MultipartFile @PathVariable + Resource
리턴 타입 ResponseEntity<String> ResponseEntity<Resource>
주의사항 디렉토리 존재 여부, 권한 설정 파일 존재 확인, 파일명 인코딩 처리

 

Spring Boot에서는 파일 업로드와 다운로드 기능을 빠르고 안정적으로 구현할 수 있습니다.

MultipartFile, Resource, ResponseEntity를 적절히 활용하면 사용자 중심의 파일 처리 로직을 간단히 만들 수 있으며,

보안이나 성능을 고려한 추가 설정도 함께 적용하면 더욱 안전한 파일 서비스가 가능합니다. 

'개발' 카테고리의 다른 글

[Java] Gradle vs. Maven 비교  (0) 2025.03.24
Java 21 주요 기능 5가지 (JDK 21 신기능)  (0) 2025.03.24
VMMap 사용법  (0) 2025.03.24
Handle.exe 사용법  (0) 2025.03.24
Process Explorer 사용법  (0) 2025.03.24