通过ajax传递Blob来生成一个文件

我试图捕获audiorecorder( https://github.com/cwilso/AudioRecorder )并通过Ajax发送blob一个PHP文件,这将接收blob内容并创build文件(在这种情况下的波形文件)。

Ajax调用:

audioRecorder.exportWAV(function(blob) { var url = (window.URL || window.webkitURL).createObjectURL(blob); console.log(url); var filename = <?php echo $filename;?>; $.ajaxFileUpload({ url : "lib/vocal_render.php", secureuri :false, dataType : blob.type, data: blob, success: function(data, status) { if(data.status != 'error') alert("boa!"); } }); }); 

和我的PHP文件(vocal_render.php):

 <?php if(!empty($_POST)){ $data = implode($_POST); //transforms the char array with the blob url to a string $fname = "11" . ".wav"; $file = fopen("../ext/wav/testes/" .$fname, 'w'); fwrite($file, $data); fclose($file); }?> 

PS:我是新手blobs和ajax。 提前致谢。

尝试上传文件作为表单数据

 audioRecorder.exportWAV(function(blob) { var url = (window.URL || window.webkitURL).createObjectURL(blob); console.log(url); var filename = <?php echo $filename;?>; var data = new FormData(); data.append('file', blob); $.ajax({ url : "lib/vocal_render.php", type: 'POST', data: data, contentType: false, processData: false, success: function(data) { alert("boa!"); }, error: function() { alert("not so boa!"); } }); }); 

 <?php if(isset($_FILES['file']) and !$_FILES['file']['error']){ $fname = "11" . ".wav"; move_uploaded_file($_FILES['file']['tmp_name'], "../ext/wav/testes/" . $fname); } ?> 
    Interesting Posts