2013-09-25 9 views
14

मैं ऑडीओरेकॉर्डर (https://github.com/cwilso/AudioRecorder) को कैप्चर करने की कोशिश कर रहा हूं और अजाक्स को एक php फ़ाइल के माध्यम से ब्लॉब भेजता हूं, जो ब्लॉब सामग्री प्राप्त करेगा और फ़ाइल (इस मामले में तरंग फ़ाइल) बनाएगा।फ़ाइल बनाने के लिए 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); 
}?> 

पी.एस: मैं धब्बे और ajax के साथ नौसिखिया हूँ। अग्रिम धन्यवाद।

उत्तर

25

प्रपत्र डेटा

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); 
} 
?> 
+0

धन्यवाद मूसा! इसने काम कर दिया! –

+1

@ user2558656 आपका स्वागत है। – Musa

+0

क्या यह "फॉर्मडाटा" के बिना भी काम करता है? तो यह एक छवि एमआईएमई प्रकार के साथ भेजना संभव है? –

0

documentation के अनुसार, XMLHttpRequest.send() का उपयोग करके आप Blob वस्तु सीधे उपयोग कर सकते हैं।

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); 

मैंने यह कोशिश की है और यह एक आकर्षण की तरह काम करता है।

संबंधित मुद्दे