从 scala 服务器返回 docx 文件

Returning docx file from scala server

我正在使用 scala akka-http 服务器。我在服务器端创建了一个 docx (word) 文件,我想 return 一个响应,这样当响应到达客户端时,一个自动下载过程应该开始。我在客户端使用 angular2。此外,为了创建 docx 文件,使用了 POI。

val document = new XWPFDocument //create an empty Document
val paragraph = document.createParagraph()
val titleRun = paragraph.createRun()
//Some configuration..
....
document.write(new FileOutputStream(new File("./" + title.trim() + ".docx")))

这是一个由用户请求触发的方法。现在文件保存到当前目录。所以问题是,如何更改我的代码以使文件通过响应发送。

akka-http 具有为客户端请求提供文件的指令

https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/file-and-resource-directives/getFromFile.html

您也许能够使用 PipedOutputStream 而不是 FileOuputStream - 例如 https://github.com/pjfanning/prometheus-akka-sample/blob/master/src/main/scala/com/example/akka/http/PrometheusService.scala