1

audio タグと Firefox に問題があります。デフォルトのブラウザのコントロールを使用しています。Chrome と Opera では正常に動作しますが、Firefox ではプログレス バーが右側に表示されたままになります (レコードの終わりのように)。サウンドは正常に再生されますが、ファイルをシークできません。私は何を間違えましたか?

ファイルをブラウザに送信する方法は次のとおりです。

header('Content-Description: File Transfer');
header('Content-Type: audio/wav');
header('Content-Disposition: attachment; filename=' . basename($clientName));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));

readfile($file);

そして、オーディオタグの私の使用:

<audio preload="auto" controls="controls" src="/record/download/id/55" />

ご回答ありがとうございます。

4

1 に答える 1

1

Firefox はレンジ リクエストを (「Range」リクエスト ヘッダーで) 送信し、サーバー コードはそれに応じて (「206 Partial Content」ステータスで) 応答する必要があります。サーバーが範囲要求を理解していないように見える場合、Firefox はそれがある種のライブ ストリームであると想定し、説明されている方法で動作します。

コードが apache サーバーを介して実行される場合、たとえば mod_xsendfile を使用して範囲要求を処理させることができます。別のオプションは、自分で実装することです。詳細については、RFC 2616、特にセクション 10.2.7 および 14.35 を参照してください。

于 2012-06-12T14:32:06.910 に答える