Scala Play是下载文件而不是流式传输

Scala Play是下载文件而不是流式传输,scala,playframework,akka-stream,Scala,Playframework,Akka Stream,我正在尝试创建一个API,它从AWS S3获取一个文件并将其发送到前端,在那里可以播放该文件。但是当我在浏览器中测试它时,它只是下载文件。我需要播放这个文件 我的行动: def index() = Action { implicit request: Request[AnyContent] => val songname: String = "song.mp3" val objStream = s3.client.getObject("music", songname).getOb

我正在尝试创建一个API,它从AWS S3获取一个文件并将其发送到前端,在那里可以播放该文件。但是当我在浏览器中测试它时,它只是下载文件。我需要播放这个文件

我的行动:

def index() = Action { implicit request: Request[AnyContent] =>
  val songname: String = "song.mp3"
  val objStream = s3.client.getObject("music", songname).getObjectContent

  val dataContent: Source[ByteString, _] = StreamConverters.fromInputStream(() => objStream)

  Ok.chunked(dataContent).withHeaders(ACCEPT_RANGES -> "bytes", CONTENT_TYPE -> "Content-Type: audio/mp3")
}
此外,它会忽略我的
内容\u类型
标题:

[warn] a.a.ActorSystemImpl - Explicitly set HTTP header 'Content-Type: Content-Type: audio/mp3' is ignored, illegal RawHeader
我应该更改什么?

使用标题代替

def index() = Action { implicit request =>
  val songname = "song.mp3"
  val objStream = s3.client.getObject("music", songname).getObjectContent

  val dataContent: Source[ByteString, _] =
    StreamConverters.fromInputStream(() => objStream)

  Ok.chunked(dataContent).as("audio/mp3")
                       // ^
}
使用标题代替

def index() = Action { implicit request =>
  val songname = "song.mp3"
  val objStream = s3.client.getObject("music", songname).getObjectContent

  val dataContent: Source[ByteString, _] =
    StreamConverters.fromInputStream(() => objStream)

  Ok.chunked(dataContent).as("audio/mp3")
                       // ^
}