2

簡単な説明:読み取りできないリクエスト(getContentType()= audio / x-wav)を受信するサーブレットがあります。このウェーブを読んでサーバー側に保存する必要があります。

詳細なストーリー:Flex、javascript、PHP、Pythonについては何も知りません。(クライアント側の「ブラウザー」から)Waveファイルを記録し、サーバーに送信して保存します(ASR処理をさらに進めるため)。

いくつか検索した後、すでに使用しているWami-Recorder(flexとjava scripを使用)というライブラリを見つけましたが、Javaサーバー側の例がなく、ドキュメントも不足しているため、手を汚すことにしました。それを機能させる。サーバー側のPythonとPHPの例が含まれています(PHPのものをリストします):

<?php    
# Save the audio to a URL-accessible directory for playback.    
parse_str($_SERVER['QUERY_STRING'], $params);    
$name = isset($params['name']) ? $params['name'] : 'output.wav';    
$content = file_get_contents('php://input');    
$fh = fopen($name, 'w') or die("can't open file");    
fwrite($fh, $content);    
fclose($fh);    
?>    

最後に、ソケットサーバーを作成してリクエストを送信した場合、メディアを簡単に取得できると確信していますが、すべてをサーブレットで処理する必要があります。

4

1 に答える 1

2

基本的に、コードのキー行であるPHPの次の行に相当するJavaサーブレットは、

$content = file_get_contents('php://input');    

InputStream input = request.getInputStream();

これは基本的に唯一のHTTPリクエスト本文を返します。OutputStream通常のJavaの方法で任意に書き込むことができます。たとえば、new FileOutputStream("/some.wav")

HTTPリクエストの本文は一度だけ読み取ることができ、request.getParameterXxx()メソッドのいずれかを呼び出すと暗黙的に解析されることを理解する必要があります。したがって、リクエストURIクエリ文字列のパラメータにも関心がある場合は、代わりに次を使用する必要があります。

String queryString = request.getQueryString();

さらに自分で解析します(つまり、で分割し&、次に分割し=、次にURLDecode名前と値)。

于 2013-01-12T17:27:35.440 に答える