出力ストリームに直接書き込むアクションがあります。時々、次のようなエラーが発生します。
Error processing GroovyPageView: getOutputStream() has already been called for this response
Caused by getOutputStream() has already been called for this response
そしてこれ:
Executing action [getImage] of controller [buddyis.ItemController] caused exception: Runtime error executing action
Caused by Broken pipe
これらの問題を解決するにはどうすればよいですか? 私が使用するアクションを以下に示します。
注: これが重要な場合は、Tomcat 7.0.42 を使用します。
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
}