在这里和其他地方,我已经看到许多对此的部分答案,但是我非常适合作为新手程序员,并希望找到一个彻底的解决方案。我已经能够在Chrome Canary(v。29.x)中设置笔记本电脑麦克风的录制音频,并且可以使用recorder.js相对容易地设置录制.wav文件并将其保存在本地,例如:
http://webaudiodemos.appspot.com/AudioRecorder/index.html
但是我需要能够将文件保存到我正在运行的Linux服务器上。这是将Blob记录的数据实际发送到服务器并将其保存为.wav文件的形式,这引起了我的注意。正如我所了解的那样,我不具备有关如何将blob保存到URL以及如何处理Linux上的二进制文件的必备PHP和/或AJAX知识,这些二进制文件确实使保存.wav文件充满了挑战。我非常欢迎任何正确方向的指点。
客户端JavaScript函数上传WAV Blob:
function upload(blob) { var xhr=new XMLHttpRequest(); xhr.onload=function(e) { if(this.readyState === 4) { console.log("Server returned: ",e.target.responseText); } }; var fd=new FormData(); fd.append("that_random_filename.wav",blob); xhr.open("POST","<url>",true); xhr.send(fd); }
PHP文件upload_wav.php:
upload_wav.php
<?php // get the temporary name that PHP gave to the uploaded file $tmp_filename=$_FILES["that_random_filename.wav"]["tmp_name"]; // rename the temporary file (because PHP deletes the file as soon as it's done with it) rename($tmp_filename,"/tmp/uploaded_audio.wav"); ?>
之后,您可以播放文件/tmp/uploaded_audio.wav。
/tmp/uploaded_audio.wav
但要记住!/tmp/uploaded_audio.wav是由用户创建的www- data,(默认情况下为PHP)用户不可读。要自动添加适当的权限,请添加以下行
www- data
chmod("/tmp/uploaded_audio.wav",0755);
到PHP的末尾(在PHP end标签之前?>)。
?>
希望这可以帮助。