1

次のような BufferedOutputStream を使用してオーディオ ファイルをロードするサーブレットがあります。

BufferedInputStream in= new BufferedInputStream( new FileInputStream( file), DEFAULT_BUFFER_SIZE );
BufferedOutputStream out= new BufferedOutputStream( response.getOutputStream(), DEFAULT_BUFFER_SIZE );

byte[] buffer= new byte[DEFAULT_BUFFER_SIZE];
int size;
while ( ( size= in.read( buffer) ) > 0 ) {
    out.write( buffer, 0, size);
}

このファイルは、オーディオ html5 タグ (または、ブラウザーがサポートしていない場合は swf プレーヤー) で使用されます。一部のブラウザでは正常に動作します (Windows: IE6-10、Firefox、Chrome、Safari。スマートフォン: Chrome、Firefox (ベータ)、デフォルトの Android ブラウザ)。しかし、2 つのブラウザー (iPad/iPhone の Safari と HTC ブラウザー) では例外があります。サーブレットを介してファイルをロードすると、約 15 秒後に例外が発生します。

org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error: -730053

Safari では、ファイルを 1 回しか読み取れないため、オーディオ html5 タグをリロードする必要があります。HTC ブラウザで、いつでも読めません。

ありがとう。

4

0 に答える 0