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 |