2012-02-13 108 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

相關問題