1

クライアント側でオーディオを録音し、処理のためにサーバーに出荷してもらいたいと思っています。クライアント側でオーディオの録音と再生に成功しました。サーバーに情報を投稿する必要があるときに問題が発生します。

私はjwagenersのrecorder.jsを使用しています:https ://github.com/jwagener/recorder.js#readme

サイトのメインディレクトリにcrossdomain.xmlファイルがあります。内容は以下の通りです

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*" secure="false"/>
</cross-domain-policy>

彼のドキュメントによる投稿リクエストは、次のようになります。

  function upload(){
     Recorder.upload({
        method: "POST",                            
        url: "http://localhost/fagaudio/recorder/recorder_server.php",  
        audioParam: "audiofile",           
         params: {                                  
           "name": "test.wav",
         },
        success: function(responseText){           
            alert(responseText); 
        },
        error: function(){                  

        }
      });
  }

サーバー側(recorder_server.php)で私は次のようなことを試みています:

print_r($_POST);
$name = $_POST['name'];
$content = file_get_contents('php://input');
$fh = fopen("audio/".$name, 'w') or die("can't open file");
fwrite($fh, $content);
fclose($fh);

print_rステートメントは次を返します:

配列([名前] =>test.wav[ファイル名]=>audio.wav[アップロード]=>クエリの送信)

生のphp投稿データがないようで、ファイルは空で保存されています。私がしていることに明らかに何か問題がありますか?私はWAMIレコーダーを使用してこれを試しましたが、問題なく動作しますが、問題は、javascriptを介してサーバーに情報を投稿できる必要があり、wamiはすべての記録後に自動的に投稿できることです。

助けや入力を事前に感謝します。また、他の無料のjavascript / flashレコーダーに精通している人がいる場合は、その方向を教えてください。私はすでにいくつかの推奨事項についてスタックオーバーフローを検索しました。

4

2 に答える 2

1

次のコードをphpファイルに入れてみてください。

    $save_folder = dirname(__FILE__) . "/audio";
if(! file_exists($save_folder)) {
  if(! mkdir($save_folder)) {
    die("failed to create save folder $save_folder");
  }
 }

$key = 'filename';
$tmp_name = $_FILES["audiofile"]["tmp_name"];
$upload_name = $_FILES["audiofile"]["name"];
$type = $_FILES["audiofile"]["type"];
$filename = "$save_folder/$upload_name";
$saved = 0;
if(($type == 'audio/x-wav' || $type == 'application/octet-stream') && preg_match('/^[a-zA-Z0-9_\-]+\.wav$/', $upload_name) ) {

  $saved = move_uploaded_file($tmp_name, $filename) ? 1 : 0;
 }

  print ($saved ? "Saved" : 'Not saved');

exit;
于 2013-04-07T01:55:33.423 に答える
0

このhttps://github.com/cykod/FlashWavRecorderを使用してください

私はこれを使用しましたが、魅力のように機能しました。

記録、再生、および記録されたファイルをサーバーにアップロードすることもできます。ここでもrecorder.jsが使用されます。

于 2012-12-17T09:59:43.707 に答える