我正在尝试在客户端录制音频并将其运送到服务器进行处理。我已经成功地能够在客户端录制和播放音频。当我需要将信息发布到服务器时,我的问题就出现了。
我正在使用 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 记录器,请指出他们的方向。我已经通过堆栈溢出搜索了一些建议。