((Akka HTTP)当我将.XLSX文件作为数组[bytes]发送给用户时,用户将获得该文件夹

问题描述 投票:0回答:1

我是akka-http的新手,我遇到了一个问题:有一个路由返回一个带有某种格式报告的文件。当请求一个xlsx文件时,用户会收到一个文件夹,

您可以在report.xlsx中重命名此文件夹并获得正常工作的Excel文件

我将xlsx文件发送为数组[bytes]使用akka-http 10.0.5

也许有人遇到这样的问题:

       path("api" / "reports" / "downloadReport") {
        get {
          parameters('format, 'jobId.as[Long]) { (format, jobId) =>
            uncacheReport(jobId) match {
              case None => complete(ResourceNotFound)
              case Some(report) if format == "excel" =>
                encodeResponse {
                  val reportHtml: String = representerSupport.represent(report, HTMLFormat.Excel)
                  complete(HttpEntity(ContentType(MediaTypes.`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`), ByteString(reportwriter bytes reportHtml)))
                }
            }
          }
        }
      }
java scala apache-poi akka-http
1个回答
0
投票

添加标题“ Content-Disposition”解决了这个问题,谢谢@PJFanning

encodeResponse {
  val reportHtml: String = representerSupport.represent(report, HTMLFormat.Excel)(user.settings.interfaceSettings)
  val header = RawHeader("Content-Disposition", "filename=report.xlsx")
  respondWithHeader(header) {
    complete(HttpEntity(ContentType(MediaTypes.`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`), reportwriter bytes reportHtml))
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.