Не удается отправить в браузер ByteArrayOutputStream в Play для Scala - PullRequest
0 голосов
/ 08 июня 2018

У меня есть следующий код в Play для Scala, который пытается отправить файл Excel в браузер:

            val out = new ByteArrayOutputStream
            val exporter = new org.pivot4j.ui.poi.ExcelExporter(out)
            val renderer = new TableRenderer
            renderer.render(model, exporter);
            out.flush
            out.close
            Ok(out).withHeaders(
                  CONTENT_TYPE -> "application/vnd.ms-excel",
                  CONTENT_DISPOSITION -> s"attachment; filename = file.xlsx")

Ok выдает ошибку компиляции:

WriteНе могу записать экземпляр java.io.ByteArrayOutputStream в ответ HTTP.Попробуйте определить Writeable [java.io.ByteArrayOutputStream]

Даже если ByteArrayOutputStream имеет тип вывода, он не может быть записан.Как это исправить?

1 Ответ

0 голосов
/ 08 июня 2018

Попробуйте позвонить toByteArray на out следующим образом:

Ok(out.toByteArray).withHeaders(...)

DefaultWritables предоставляет список Writable, предоставленный Play out of the-box.В частности, существует записываемый [массив [байт]] , который должен быть выбран при вызове toByteArray

...