2013-05-29 13 views
5

Sto utilizzando Recorder.js che consente agli utenti di creare la propria registrazione audio dall'ingresso del microfono. Sono nuovo a questo così sto usando this site come punto di riferimento.Invia file audio registrato al server Web con PHP

Questo codice crea un file wav scaricabile:

<html> 
    <head> 
     <script src="js/recorderjs/recorder.js"></script> 
     <script src="js/main.js"></script> 
     <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    </head> 

    <body> 
     <img id="record" src="mic.png" onclick="toggleRecording(this);"><br> 

     <img src="save.svg" onclick="saveAudio();"> 

     <form action="savefile.php" method="post"> 
      <input type="submit" value="Submit"> 
     </form> 
    </body> 
</html> 

Questo avvia e arresta la registrazione:

<img id="record" src="mic.png" onclick="toggleRecording(this);"> 

E questo scarica il file .wav dallo script recorder.js:

<img src="save.svg" onclick="saveAudio();"> 

Sto usando questo script PHP per cercare di salvare il file .wav t o la directory audio /:

<?php 

$save_folder = dirname(__FILE__) . "/audio"; 
if(! file_exists($save_folder)) { 
    if(! mkdir($save_folder)) { 
     die("failed to create save folder $save_folder"); 
    } 
} 

$key = 'filename'; 
$tmp_name = $_FILES["audiofile"]["tmp_name"]; 
$upload_name = $_FILES["audiofile"]["name"]; 
$type = $_FILES["audiofile"]["type"]; 
$filename = "$save_folder/$upload_name"; 
$saved = 0; 
if(($type == 'audio/x-wav' || $type == 'application/octet-stream') && preg_match('/^[a-zA-Z0-9_\-]+\.wav$/', $upload_name)) { 

    $saved = move_uploaded_file($tmp_name, $filename) ? 1 : 0; 
} 

?> 

Ora, quello che spero è qualcuno che mi aiuti con uno script PHP che carica i file .wav nella cartella/audio invece di avere l'utente a scaricare il file.

Qualsiasi aiuto con questo sarebbe molto apprezzato.

+1

Hi Enijar, siete in grado di salvare il file registrato sul server. Come l'hai fatto. puoi per favore condividere quel codice Grazie – Nitin

+0

per favore condividi quel codice. – Nitin

risposta

4

Penso che non sia possibile utilizzare tutti i campi di file http perché si aspettano un percorso locale. Si potrebbe provare un caricamento con AJAX.

var req = null; 
var url = "savefile.php"; 
var data = "": // you have to check how to get the data from your saveAudio() method 

(window.XMLHttpRequest) ? req = new XMLHttpRequest() : (window.ActiveXObject) ? req = new ActiveXObject("Microsoft.XMLHTTP") : req = false; 
req.open(method, url, true); 
req.setRequestHeader("Content-Type", "multipart/form-data"); 

if(data != null && data != "") 
{ 
    req.setRequestHeader("Content-length", data.length); 
    req.send(data); 
} 

È yust bisogno per scoprire come è possibile ottenere il fileContent dalla vostra funzione saveAudio() e riempirlo nella variabile data.

E forse questo può aiutare anche voi uploading files with ajax