Mam akcję, która zapisuje bezpośrednio do strumienia wyjściowego. Czasami pojawia się następujący błędów:Błąd przetwarzania GroovyPageView: getOutputStream() został już wywołany dla tej odpowiedzi
Error processing GroovyPageView: getOutputStream() has already been called for this response
Caused by getOutputStream() has already been called for this response
i ten jeden:
Executing action [getImage] of controller [buddyis.ItemController] caused exception: Runtime error executing action
Caused by Broken pipe
Jak mogę rozwiązać te problemy? Akcja, której używam, jest wymieniona poniżej.
UWAGA: Używam Tomcat 7.0.42, jeśli jest to ważne!
def getImage() {
byte [] imageByteArray = // some image bytes
response.setHeader 'Content-disposition', "attachment; filename=\"${imageName}${imageExtension}\""
response.setContentType("image/pjpeg; charset=UTF-8")
response.contentLength = imageByteArray.size()
response.outputStream.write(imageByteArray)
response.outputStream.flush()
response.outputStream.close()
return
}
Spróbuj wyrenderować coś (manekina) w celu indeksowania lub renderowania kodu statusu i zobacz, czy nadal występuje problem. Możesz zacząć od 'render (status: 200)' lub co najmniej 'render 'Done" 'etc przed powrotem. – dmahapatro
Dlaczego to robisz? – confile
Skorzystaj z [tego pytania] (http://stackoverflow.com/questions/13184603/grails-error-using-httpservletresponse-to-export-file-for-download). – dmahapatro