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())
}