I'm trying to capture audiorecorder (https://github.com/cwilso/AudioRecorder) and send the blob through Ajax a php file, which will receive the blob content and create the file(the wave file in this case).
Ajax call:
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!"); } }); });
and my php file (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); }?>
P.S:I'm newbie with blobs and ajax. Thanks in advance.
Try uploading the file as form data
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); } ?>
According to the documentation, by using XMLHttpRequest.send()
you can use the Blob
object directly.
var blob = new Blob(chunks, { 'type' : 'audio/webm' }); var xhr = new XMLHttpRequest(); xhr.open('POST', '/speech', true); xhr.onload = function(e) { console.log('Sent'); }; xhr.send(blob);
I've tried this and it works like a charm.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With