0

我有以下代码:

response.contentType = "application/octet-stream"
response.setContentLength(templateFile.bytes.length)
response.setHeader("Content-disposition", "attachment;filename=${fileName}")
IOUtils.copy(templateFile,response.outputStream)

其中 templateFile 是 Jasper 报告模板 (*.jrxml)。而且我总是得到 net::ERR_FILE_NOT_FOUND。对于不同的文件类型,此代码可以正常工作。

我也尝试使用内容类型'text/xml',但结果是一样的。

4

2 回答 2

1

在 outputStream 上调用 flush() 后问题解决。运算符 << 隐式执行此操作,而 IOUtils.copy 不执行此操作。

于 2013-02-20T11:38:19.287 回答
0

尝试使用设置数据长度response.setContentLength()。此外,您可以调试以查看文件的字节是否在response.outputStream.

这是对我有用的片段:

byte[] bytes = getBytesOfFile()
response.setContentType("application/octet-stream")
response.setContentLength(bytes.length)
response.outputStream << bytes
于 2013-02-19T13:03:07.517 回答