Java (Akka HTTP)当我以数组[bytes]的形式向用户发送一个.XLSX文件时,用户将获得该文件夹
我不熟悉akka http,我遇到了一个问题:有一个路由器返回一个带有特定格式报告的文件。当请求xlsx文件时,用户会收到一个文件夹 您可以在report.xlsx中重命名此文件夹,并获得正常工作的excel文件 我以数组[字节]的形式发送xlsx文件 使用akka http 10.0.5 也许有人遇到了这样的问题: 路径(“api”/“报告”/“下载报告”){ 得到{ 参数('format,'jobId.as[Long]){(format,jobId)=> uncacheReport(jobId)匹配{ 案例无=>complete(ResourceNotFound) 如果格式==“excel”=> 编码响应{ val reportHtml:String=representerSupport.represente(报告,HTMLFormat.Excel) 完成(HttpEntity(ContentType(MediaTypes.application/vnd.openxmlformats of cedocument.spreadsheetml.sheet`),ByteString(reportwriter bytes reportHtml))) } } } } } 添加标题“内容处置”解决了问题,谢谢@PJFanningJava (Akka HTTP)当我以数组[bytes]的形式向用户发送一个.XLSX文件时,用户将获得该文件夹,java,scala,apache-poi,akka-http,Java,Scala,Apache Poi,Akka Http,我不熟悉akka http,我遇到了一个问题:有一个路由器返回一个带有特定格式报告的文件。当请求xlsx文件时,用户会收到一个文件夹 您可以在report.xlsx中重命名此文件夹,并获得正常工作的excel文件 我以数组[字节]的形式发送xlsx文件 使用akka http 10.0.5 也许有人遇到了这样的问题: 路径(“api”/“报告”/“下载报告”){ 得到{ 参数('format,'jobId.as[Long]){(format,jobId)=> uncacheReport(jobI
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))
}
}
xlsx文件是zip文件,因此可能您的浏览器正在解压缩xlsx文件-可能您可以尝试使用curl或postman,以便查看HTTP响应头-检查是否设置了内容类型-使用filename@PJFanning太多了!添加标题“contentdisposition”解决了
contentdisposition:inline的问题;filename=report.xlsx
更为正常——是一个可能会有所帮助的类