본문 바로가기
빅데이터 부트캠프/Spring boot

빅데이터 부트캠프 95일차

by Mecodata 2022. 11. 21.

파일 다운로드 기능 구현

MultipartFile

업로드 한 파일을 표현할 때 사용되는 인터페이스

- getContentType() = 파일 타입 조회

- getName() = 파일명 조회

- getOriginalFilename() = 파일명 조회 (확장자 포함)

- getSize() = 파일 크기 조회 (byte 단위)

- transferTo() = 해당 경로로 파일 업로드

※ 파일 경로 입력시 [디렉터리 경로 + "\\" + 파일명]으로 입력해야 지정한 디렉터리에 지정한 파일명으로 파일을 업로드

(Window의 특징 => "/"이 아닌 "\\" 입력)

 

- HTML의 <input>을 통해 파일을 받을 경우 @RequestParam() name값과 HTML 파일의 <input>에서의 name값서로 일치해야 함

- Controller에서 MultipartFile을 전송받기 위해서는 HTML의 <form>의 ecntype 속성multipart/form-data로 설정되어있어야 함

 

<form>태그의 enctype 속성

- 기본값 = application/x-www-form-urlencoded (텍스트 데이터 전송시)

- multipart/form-data = 텍스트 데이터와 바이너리 데이터를 각 파트별로 나누어 함께 전송 (파일이나 이미지를 서버로 전송시 주로 사용)

- multipart/form-data을 사용할 경우 POST 방식으로만 데이터를 전송해야함 (Spring에서 그렇게 하도록 하드코딩으로 설정되어있음)

 

UUID

- 중복되지 않은 고유한 키 값을 설정해주는 클래스 

- randomUUID() = 랜덤으로 키값을 설정 (파이썬의 hash()와 비슷)

 

File 클래스

- File(경로).exists() = 해당 경로에 파일이 존재하는지 true/false 반환

- File(경로).mkdir() = 해당 경로에 폴더 생성

※ Path path = Paths.get() => 해당 경로를 path 객체에 저장 

 

ResponseEntity

- 응답으로 변환될 데이터를 모두 담은 요소들을 객체로 만들어서 반환할때 사용 (파일 다운로드)

- ResponseEntity인자값으로 body, header, status를 받을 수 있는데 body, header는 선택적으로 입력 가능하고status는 필수로 입력해줘야함

- ResponseEntity입력시 <>에 입력하는 설정은 body를 어떤 데이터 타입으로 설정할 것인지 입력하는 것 

- ResponseEntity 파일 다운로드에 이용할 때는 body를 Resource 타입으로 지정하여 사용 

ex) ResponseEntity<Resource>(resource, header, status) 

 

- 자원 => InputStreamResource(Files.newInputStream(경로))를 통해 파일 내용을 읽어와 Resource로 반환

- 헤더 => setContentDisposition()로 웹페이지에서 응답 데이터를 어떻게 표시할지 설정

※ ContentDisposition.builder("attachment")로 설정해야 사용자가 로컬에서 다운로드 가능

ex) headers.setContentDisposition(ContentDisposition.builder("attachment").filename("file.txt").build());

=> 사용자가 로컬에서 file.txt라는 이름으로 해당 파일을 다운로드 받을 수 있도록 헤더 설정

- 상태 => HttpStatus(Enum 타입) 사용

.OK = 요청 성공 처리, .NOT_FOUND = 요청에 해당하는 파일 없음 처리

 

※ HttpStatus 상태 코드 설명 링크

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

 

JPA Auditing

- Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능

 

관련 어노테이션

@EnableJpaAuditing = JPA Auditing 활성화 (application 클래스에 입력) 

@EntityListeners(AuditingEntityListener.class) = 해당 클래스에 Auditing 기능을 포함시킴

@CreatedDate = 해당 필드 데이터 생성시 생성 시간 데이터 저장
@LastModifiedDate = 해당 필드 데이터 생성시 수정 시간 데이터 저장

@CreatedDate, @LastModifiedDate,@GeneratedValue로 지정한 컬럼은 해당 컬럼 이외의 컬럼 데이터를 DB로 전송시 자동으로 데이터가 생성되어 입력되기 때문에 DTO => Entity 변환시 builder()로 값을 지정해줄 필요 X 

'빅데이터 부트캠프 > Spring boot' 카테고리의 다른 글

MyBatis 세팅  (0) 2022.12.13
빅데이터 부트캠프 97일차  (0) 2022.11.23
빅데이터 부트캠프 96일차  (0) 2022.11.22
빅데이터 부트캠프 94일차  (0) 2022.11.18

댓글