본문 바로가기

Development/Web & Server

[Play Framework2] Streaming HTTP responses

Streaming 기능에 대해서 실제로 구현해서 만들어 본 적이 없는데 이번에 PlayFramework에서 아주 간단하게 제공하는 방법이 있다.


참고 사이트 : https://www.playframework.com/documentation/2.3.x/ScalaStream


def index = Action {

  val file = new java.io.File("/tmp/fileToServe.pdf")
  val fileContent: Enumerator[Array[Byte]] = Enumerator.fromFile(file)    
    
  Result(
    header = ResponseHeader(200),
    body = fileContent
  )
}

위의 코드로 간단한 스트리밍 기능? 이 구현이 완료가 되었고 혹시나 Enumerator.fromFile(file) 부분에서 에러가 생긴다면 (import play.api.libs.concurrent.Execution.Implicits._) 이걸 넣어주자


def index = Action {
  Ok.sendFile(
    content = new java.io.File("/tmp/fileToServe.pdf"),
    fileName = _ => "termsOfService.pdf"
  )
}

위의 방법은 간단히 파일을 배포하는 것이다. 위의 방식에서는 웹브라우저에서 바로 보여지지만 이 방법은 다운로드를 할 수 있다.