Spray将xls文件发送给客户端

时间:2014-03-27 19:19:01

标签: excel download spray

我正在开发一个带喷雾的休息api我需要从我的网络客户端下载带有报告的excel文件。

excel-generator方法已经准备就绪,但是喷射了#f; getFromFile(fileFullPath)"得到"内部服务器错误"

有什么想法吗?

这是我的喷码:

(ctx: RequestContext) => {
   val actor = actorRefFactory.actorOf(Props(new Actor {
      def receive = {
        case GetAnualReport(year, generateExcel) =>
          val flujoActor = context.actorOf(Props[FlujoActor])
          flujoActor ! GetAnualReport(year, generateExcel)
        case ReporteResponse(path) =>
          println("FILE: "+path)
          getFromFile(path)
      }
   }))
actor ! GetAnualReport(year, true)
}

输出:

FILE: /tmp/flujocaja-reports-5627299217173924055/reporte-anual.xls
HTTP/1.1 500 Internal Server Error

1 个答案:

答案 0 :(得分:2)

您的代码的主要问题是getFromFile(path)不会对请求执行任何操作,而是返回一个永远不会被调用的新函数RequestContext => Unit。一种解决方案可能是用getFromFile(path)(ctx)替换该行。

但是,在继续使用内部路线之前,如何处理异步工作有更好的方法:使用期货和FutureDirectives之一。这是一个大致适合您的用例的示例:

onSuccess((flujoActor ? GetAnualReport(year, generateExcel)).mapTo[ReporteResponse]) { response =>
  getFromResource(response.path)
}

那就是说,我不确定你为什么会在你的场景中得到500 Internal Server Error。控制台上没有任何内容暗示问题是什么?