역할
- 서버에서 업로드/첨부파일 정보를 담는 DTO
- DB 저장용이 아니라, 파일 처리 후 클라이언트 응답용
1. 구조
public record StoredAttachment(
String originalFilename, // 클라이언트에서 올라온 원본 파일명
String storedFilename, // 서버에 실제 저장된 이름(UUID + 원본)
String contentType, // MIME 타입 (ex: image/png, application/pdf)
long sizeBytes, // 파일 용량(bytes)
String storagePath // 서버/클라이언트에서 접근 가능한 URL 경로 (/uploads/...)
) {}
2. 설명
- originalFilename → 업로드 시 클라이언트 원본 이름
- storedFilename → 서버 저장용 안전 이름(UUID + 원본)
- contentType → MIME 타입 (이미지, PDF 등)
- sizeBytes → 파일 크기
- storagePath → 실제 접근 가능한 URL (
/uploads/...)
FileStorageService에서 첨부파일 저장/이동 후 반환 시 사용
- DB에는 저장하지 않아도 되고, 클라이언트에게 파일 메타데이터 전달용
3. 포인트
- 레코드(record) 사용 → 불변(immutable), getter 자동 제공
- 파일 업로드 처리 후 통일된 DTO 반환
- 프론트에서 원본 이름 + 접근 URL + 타입/용량 확인 가능