Grails发送文件,然后删除
问题描述:
我发送一个文件使用响应< < file.newInputStream(类似于这个答案here,但我想删除此文件后,但是,当我呼吁删除此文件,它不会删除它。我敢肯定这是因为该文件是仍在使用(流)。如何在我检查这个,然后删除。Grails发送文件,然后删除
def tempfile = new File(filename)
if (tempfile) {
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "attachment;filename=${tempfile.getName()}")
response.outputStream << tempfile.newInputStream()
} else {
renderErrorMsg("ERROR: Cannot open/find file - ${filename}.")
}
tempfile.delete()
感谢。
答
你不打烊输入流。更改
response.outputStream << tempfile.newInputStream()
要
tempfile.withInputStream { response.outputStream << it }
后者将确保流被关闭。另外,如果引发异常,您可能需要删除finally块中的文件。
谢谢!我确实试过,但想简化示例代码。你有没有更详细解释这个链接? – ibaralf 2012-02-13 18:32:58