매일 조금씩

[Spring] range에 따른 동영상 분기 처리(한번에/range request) - FileSystemResource 본문

Spring Framework

[Spring] range에 따른 동영상 분기 처리(한번에/range request) - FileSystemResource

mezo 2022. 4. 18. 17:55
728x90
반응형

이 기능을 구현하면서 Spring framework을 써야할 백가지 이유 중 하나가 추가되었다.

 

내가 구현하고자 하는 기능은.. 

request로 header에

range가 들어오면 동영상을 해당 range만큼 range request로 보내고 (206 : partial content)

range가 들어오지 않으면 동영상을 한번에 보내는 것이다. (200 : ok)

 

header의 range를 가져와서 직접 분기처리를 해줘야하는줄 알았지만 

FileSystemResource라는 아주 좋은 클래스가 있었다.

range값의 유무를 통해 알아서 200 or 206으로 처리해주기 때문에 range request 구현조차 필요없었다.

 

컨트롤러를 보면 다음과 같다.

  @GetMapping(value = "/{media_id}/mp4")
  public ResponseEntity<FileSystemResource> getMp4ById(@PathVariable("media_id") long id) {
    DocumentDirectoryUtil directoryUtil = new DocumentDirectoryUtil(id);
    FileSystemResource fileSystemResource = new FileSystemResource(
        Paths.get(directoryUtil.getDirectoryPath(), mediaService.getMediaById(id).getFileName()));
    return ResponseEntity.ok().body(fileSystemResource);
  }

위 코드처럼 FileSystemResource에 동영상파일을 넣어주기만 하면 된다. 

728x90
반응형