我即将完成一个小项目,但是遇到了一个小问题,我自己无法解决。我最终想要做的是从用户的麦克风录制用户的声音,并在录制完成后将录音上传到我的服务器上。我正在使用此项目中的代码:https://github.com/cwilso/AudioRecorder。
这个项目很好用,但是我需要添加一个默认不包含的功能。我需要能够在录音完成后将文件上传到我的服务器上。使用默认代码,文件可以被下载到我的计算机本地,但不能上传。所以我进行了一些研究,并找到了另一个类似的项目,具有上传功能。然而,我认为该项目的其余部分存在更多错误。因此,我尝试添加以下项目的“上传代码”:https://github.com/nusofthq/Recordmp3js Javascript 代码:
这个项目很好用,但是我需要添加一个默认不包含的功能。我需要能够在录音完成后将文件上传到我的服务器上。使用默认代码,文件可以被下载到我的计算机本地,但不能上传。所以我进行了一些研究,并找到了另一个类似的项目,具有上传功能。然而,我认为该项目的其余部分存在更多错误。因此,我尝试添加以下项目的“上传代码”: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。
exportWAV
方法(似乎正在导出Blob),但在相信我的话之前,你应该自己尝试一下。如果确实可以,那么这个Blob正是你想要传递到XHR上传的内容。 - K LeeexportWAV
方法,在几个 AudioRecorder 文件中都有提到。当你谈到exportWAV
方法时,你指的是哪个文件?一旦我知道了这个,我就会尝试使用 XMLHttpRequest。再次感谢! - three3