【发布时间】:2014-09-25 21:14:57
【问题描述】:
我非常接近完成我的一个小项目,但是,我遇到了一个我自己似乎无法解决的小问题。我最终想要做的是从用户的麦克风录制用户的声音,然后在他们完成后将录音上传到我的服务器。我正在使用这个项目的代码:https://github.com/cwilso/AudioRecorder
效果很好,但我需要添加一个开箱即用不包含的功能。录制完成后,我需要能够将文件上传到我的服务器。使用默认代码,文件可以本地下载到我的电脑,但不能上传。所以我做了一些研究,发现了另一个具有上传功能的类似项目。但是,在我看来,该项目的其余部分更加错误。所以我尝试从以下项目中添加“上传代码”:https://github.com/nusofthq/Recordmp3js
Javascript 代码:
function uploadAudio(mp3Data){
var reader = new FileReader();
reader.onload = function(event){
var fd = new FormData();
var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3');
console.log("mp3name = " + mp3Name);
fd.append('fname', mp3Name);
fd.append('data', event.target.result);
$.ajax({
type: 'POST',
url: 'upload.php',
data: fd,
processData: false,
contentType: false
}).done(function(data) {
//console.log(data);
log.innerHTML += "\n" + data;
});
};
reader.readAsDataURL(mp3Data);
}
PHP 代码:
<?php
if(!is_dir("recordings")){
$res = mkdir("recordings",0777);
}
// pull the raw binary data from the POST array
$data = substr($_POST['data'], strpos($_POST['data'], ",") + 1);
$filename = urldecode($_POST['fname']);
// write the data out to the file
$fp = fopen('recordings/'.$filename, 'wb');
fwrite($fp, $decodedData);
fclose($fp);
?>
我尝试将此代码与位于https://github.com/cwilso/AudioRecorder 的项目结合起来,但无济于事。我需要在上面的 Javascript 代码中更改什么以及我需要将它放在哪里?非常感谢任何帮助!
PS:我知道这只适用于 Chrome、FireFox 和 Opera。
【问题讨论】:
标签: javascript jquery html html5-audio audio-recording