2012-02-13 79 views
1

我发送一个文件使用响应< < 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() 

感谢。

回答

3

你不打烊输入流。更改

response.outputStream << tempfile.newInputStream() 

tempfile.withInputStream { response.outputStream << it } 

后者将确保流被关闭。另外,如果引发异常,您可能需要删除finally块中的文件。

+0

谢谢!我确实试过,但想简化示例代码。你有没有更详细解释这个链接? – ibaralf 2012-02-13 18:32:58

相关问题