1

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() の両方を無駄に追加しようとしました。これを引き起こす可能性のあるアイデアはありますか?

4

0 に答える 0