我是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)))
}
}
}
}
}
添加标题“ 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))
}
}