Scala 喷洒:发送响应后删除临时文件

Scala 喷洒:发送响应后删除临时文件,scala,spray,Scala,Spray,我使用getFromFile来响应临时文件。写入响应流后,如何删除此文件? 底层服务器是spray servlet。最终我找到了解决方案: case class CleanupFile(file: java.io.File) def sendFileAndCleanup(file: java.io.File) = mapRequestContext { ctx => ctx.withRouteResponseMapped { case r: spray.http.

我使用
getFromFile
来响应临时文件。写入响应流后,如何删除此文件?
底层服务器是spray servlet。

最终我找到了解决方案:

case class CleanupFile(file: java.io.File)

def sendFileAndCleanup(file: java.io.File) =
  mapRequestContext { ctx =>
    ctx.withRouteResponseMapped {
      case r: spray.http.HttpResponse => r.withAck(CleanupFile(file))
      case x => x
    }
  } {
    getFromFile(file)
  }
然后使用
runRoute
在actor中处理
CleanupFile

def receive = runRoute(routes) orElse {
  case CleanupFile(file) => Try(file.delete())
}