Не удается отправить в браузер ByteArrayOutputStream в Play для Scala

У меня есть следующий код в 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 ответ

Решение

Попробуйте позвонить toByteArray на out вот так:

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

DefaultWritables предоставляет список Writable Предоставлено Play из коробки. В частности, существует Writeable[Array[Byte]], который должен быть выбран при вызове toByteArray

Другие вопросы по тегам