2013-03-13 15 views
6

Pracuję nad aplikacją grails, ma funkcję udostępniania plików. Przesyła pliki na serwer i pozwala użytkownikowi pobrać plik z serwera. Użyłem następujący kod dla tego:Duży plik do pobrania przy użyciu 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()) 

ten kod działa dobrze dla małych plików, ale gdy rozmiar pliku jest zwiększony, tj> 100MB, to daje mi następujący błąd:

java.lang.OutOfMemoryError: Java heap space 

So , co mogę zrobić, aby moja aplikacja mogła pobierać duże pliki? Dzięki

Odpowiedz

9

Zamiast ładowania pliku do pamięci, wymienić

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

Z:

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

dzięki !! działało świetnie! –

Powiązane problemy