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

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

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

我以数组[bytes]的形式发送xlsx文件 使用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)))
                }
            }
          }
        }
      }
whj901180 回答:(Akka HTTP)当我将.XLSX文件作为数组[bytes]发送给用户时,用户将获得文件夹

添加标题“ 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))
  }
}
本文链接:https://www.f2er.com/3131594.html

大家都在问