2013-03-13 1 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()) 

Этот код прекрасно работает для небольших файлов, но если размер файла увеличивается, т.е.> 100MB, он дает мне следующую ошибку:

java.lang.OutOfMemoryError: Java heap space 

So , что я могу сделать, чтобы мое приложение могло загружать большие файлы? Благодаря

ответ

9

Вместо загрузки файла в память, заменить

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

С:

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

спасибо !! отлично работает! –