Ich habe eine Aktion, die direkt in den Ausgabestream schreibt. Manchmal habe ich folgenden Fehler:Fehler bei der Verarbeitung von GroovyPageView: getOutputStream() wurde bereits für diese Antwort aufgerufen
Error processing GroovyPageView: getOutputStream() has already been called for this response
Caused by getOutputStream() has already been called for this response
und diese ein:
Executing action [getImage] of controller [buddyis.ItemController] caused exception: Runtime error executing action
Caused by Broken pipe
Wie kann ich diese Probleme zu lösen? Die Aktion, die ich verwende, ist unten aufgeführt.
HINWEIS: Ich verwende Tomcat 7.0.42, wenn dies wichtig ist!
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
}
Versuchen Sie, etwas (Dummy) zu indizieren oder einen Statuscode rendern und sehen, ob Sie immer noch das Problem bekommen. Sie können mit 'render (status: 200) 'oder zumindest' render "Done" etc vor der Rückkehr beginnen. – dmahapatro
Warum das tun? – confile
Verweisen Sie [diese Frage] (http://stackoverflow.com/questions/13184603/grails-error-using-httpservletresponse-to-export-file-for-download). – dmahapatro