阿卡-HTTP.生成文件并发送给客户端

Ole*_*leg 2 scala akka-http

我需要将字符串保存到文本文件并发送到浏览器.我的路线:

def genFileRoute: Route =
    path("someresource" / "generate") {
        get {
            complete( genFile )
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我有发电机的问题:

def genFile = {
    val str = "Hi all! I am a string in future text file"

     // Need to write some code here :(
     // Something like 'php://output' with headers, but for akka.
}
Run Code Online (Sandbox Code Playgroud)

如何在file.txt不使用文件系统的情况下创建内存中的文本文件?如何将其发送到客户端浏览器(下载)?

PS对不起我的英文,这不是我的母语.

Pat*_*zna 7

您希望为此使用Content-Disposition标头 - 它允许您设置发送到浏览器的文件名.根本不需要创建文件; 在您的示例中,该函数可以返回纯String.

def genFile = {
    val str = "Hi all! I am a string in future text file"

    str
}
Run Code Online (Sandbox Code Playgroud)

路线:

path("someresource" / "generate") {
  get {
    respondWithHeader(`Content-Disposition`(
        ContentDispositionTypes.attachment, Map("filename" -> "somefile.txt"))) {
      complete(genFile)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 对于未来的灵魂:`import akka.http.scaladsl.model.headers._ (2认同)