Не удается отправить в браузер 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