无法通过Scala的播放中的TearrayOutputStream发送到浏览器
我为尝试将Excel文件发送到浏览器的Scala编写了以下代码:无法通过Scala的播放中的TearrayOutputStream发送到浏览器,scala,playframework,playframework-2.5,pivot4j,Scala,Playframework,Playframework 2.5,Pivot4j,我为尝试将Excel文件发送到浏览器的Scala编写了以下代码: val out = new ByteArrayOutputStream val exporter = new org.pivot4j.ui.poi.ExcelExporter(out) val renderer = new TableRenderer renderer.render(model, exporter);
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
抛出编译错误:
◾无法将java.io.ByteArrayOutputStream的实例写入HTTP
答复。尝试定义一个可写的[java.io.ByteArrayOutputStream]
即使
ByteArrayOutputStream
属于输出类型,也无法写入。如何解决此问题?请尝试在out
上调用toByteArray
,如下所示:
Ok(out.toByteArray).withHeaders(...)
提供“开箱即用”提供的可写的
列表。特别是,当您调用它编译的toByteArray
时,应该会拾取一些内容,但它在运行时会抛出以下消息:[warn]p.c.s.n.NettyModelConversion-在标头(application/vnd.ms excel)和附加到实体(application/octet stream)中设置的内容类型,忽略实体中的内容类型。若要删除此警告,请使用Result.as(…)设置内容类型,而不是手动设置标题。
我使用Ok(out.toByteArray)
在没有标题的情况下工作。如果您仍然希望设置内容类型
标题,请尝试将设置为(“应用程序/vnd.ms excel”)
而不是。使用标题
。