2013-03-13 5 views
6

私はgrailsアプリケーションを使っています。ファイル共有機能を持っています。これは、サーバーにファイルをアップロードし、ユーザーがサーバーからファイルをダウンロードできるようにします。私はこのために、次のコードを使用:このコードは、小さなファイルのために正常に動作しますが、ファイルのサイズが増加した場合grailsを使った大きなファイルのダウンロード

def file = new java.io.File(filePath) 
response.setContentType("application-xdownload") 
response.setHeader("Content-Disposition", "attachment;filename=${fileName}") 
response.getOutputStream() << new ByteArrayInputStream(file.getBytes()) 

、すなわち> 100メガバイト、それは私に次のエラーを与える:

だから、
java.lang.OutOfMemoryError: Java heap space 

私のアプリケーションで大きなファイルをダウンロードできるようにするにはどうすればよいですか?代わりに、メモリにファイルをロードする、置き換える おかげ

答えて

9

response.getOutputStream() << new ByteArrayInputStream(file.getBytes()) 

file.withInputStream { response.outputStream << it } 
+0

感謝!!素晴らしい仕事! –

関連する問題