2013-03-13 42 views
6

Tôi đang làm việc trên một ứng dụng grails, nó có tính năng chia sẻ tệp. Nó tải lên các tập tin lên máy chủ và cho phép người dùng tải xuống tệp từ máy chủ. Tôi sử dụng đoạn mã sau cho việc này:Tải xuống tệp lớn sử dụng 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()) 

Mã này hoạt động tốt cho các tập tin nhỏ nhưng khi kích thước của tập tin được tăng lên, tức là> 100MB, nó mang lại cho tôi những lỗi sau:

java.lang.OutOfMemoryError: Java heap space 

Vì vậy, , tôi có thể làm gì để ứng dụng của tôi có thể tải xuống các tệp lớn? Cảm ơn

Trả lời

9

Thay vì tải các tập tin vào bộ nhớ, thay thế

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

Với:

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

nhờ !! làm việc tuyệt vời! –

Các vấn đề liên quan