2013-03-13 15 views
6

Sto lavorando a un'applicazione Grails, ha una funzione di condivisione file. Carica i file sul server e consente all'utente di scaricare il file dal server. Ho usato il seguente codice per questo:Scarica file di grandi dimensioni utilizzando i 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()) 

Questo codice funziona bene per file di piccole dimensioni, ma quando si aumenta la dimensione del file di, cioè> 100MB, mi dà il seguente errore:

java.lang.OutOfMemoryError: Java heap space 

Così , cosa posso fare per consentire alla mia applicazione di scaricare file di grandi dimensioni? Grazie

risposta

9

Invece di caricare il file nella memoria, sostituire

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

Con:

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

grazie !! ha funzionato alla grande! –

Problemi correlati