(Akka HTTP) Когда я отправляю файл .XLSX пользователю в виде массива [байтов], тогда пользователь получает папку - PullRequest
0 голосов
/ 09 ноября 2019

Я новичок в 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)))
                }
            }
          }
        }
      }

1 Ответ

0 голосов
/ 10 ноября 2019

добавление заголовка "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))
  }
}
...