6

私は 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())

このコードは小さなファイルでは問題なく動作しますが、ファイルのサイズが大きくなると、つまり 100MB を超えると、次のエラーが発生します。

java.lang.OutOfMemoryError: Java heap space

では、アプリケーションで大きなファイルをダウンロードできるようにするにはどうすればよいでしょうか? ありがとう

4

1 に答える 1

9

ファイルをメモリにロードする代わりに、

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

と:

file.withInputStream { response.outputStream << it }
于 2013-03-13T08:09:59.473 に答える