Grails 2.1.1 コントローラーで、ビデオ (mp4) ファイルをブラウザーにストリーミングしようとしています。
次のコードは機能します。ただし、コンテンツ タイプを指定していないため、ブラウザはファイルを直接保存します。
OutputStream os = response.outputStream
ByteArrayInputStream is = new ByteArrayInputStream(videoInstance.data)
response.contentLength = videoInstance.data.length
os << is
コンテンツタイプを指定するように変更しようとすると...
OutputStream os = response.outputStream
ByteArrayInputStream is = new ByteArrayInputStream(videoInstance.data)
response.contentType = videoInstance.contentType
response.contentLength = videoInstance.data.length
os << is
...突然、例外が発生しました。
Software caused connection abort: socket write error. Stacktrace follows:
Message: Software caused connection abort: socket write error
以降
ERROR errors.GrailsExceptionResolver - IllegalStateException occurred when processing request: getOutputStream() has already been called for this response.
.os.flush() と os.close() の両方を無駄に追加しようとしました。これを引き起こす可能性のあるアイデアはありますか?