티스토리 뷰
반응형
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' 카테고리의 다른 글
[Java] Gradle vs. Maven 비교 (0) | 2025.03.24 |
---|---|
Java 21 주요 기능 5가지 (JDK 21 신기능) (0) | 2025.03.24 |
[Java] jdom2 라이브러리 사용하여 XML 파싱하기 (2) | 2024.09.06 |
[Java] String을 int와 Integer로 변환하는 방법 (0) | 2024.08.05 |
[java] 자료형 변환의 종류 (0) | 2024.08.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- spring boot 파일 다운로드
- java integer 비교 방법
- integer 캐싱 범위
- c#
- spring boot 빌드설정
- 스마트 포인터
- wrapper 클래스 변환
- spring 파일 처리 예제
- spring rest 파일 전송
- java string int 변환
- 자바 강제 형변환
- java 빌드 도구 비교
- 자바 자동 형변환 예제
- spring interceptor 예제
- multipartfile 사용법
- RAII
- wireshark dtmf 분석
- spring 인터셉터
- maven 설정
- c# dtmf 전송
- java integer valueof parseint 차이
- int to integer 변환
- integer.valueof 사용법
- java 형변환 종류
- spring handlerinterceptor
- 자바 빌드 툴
- spring boot 파일 업로드
- voip rtp dtmf
- rtp 패킷 예제
- gradle 예제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함