2013-04-17 13 views
5

Devo creare l'intestazione per un file .wav affinché venga riprodotta nell'elemento.Intestazione php per il download del file .wav ma non è possibile riprodurre in Embedded

$filename = basename($_GET['file']); 

$pos = strrpos($file, '.'); 

$extension = ($pos !== false) ? substr($file, $pos) : ''; 

$mime_type = ""; 
switch ($extension) { 
    case '.mp3': 
     $mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"; 
     break; 
    case '.ulaw': 
     $mime_type = "audio/basic"; 
     break; 
    case '.gsm': 
     $mime_type = "audio/x-gsm"; 
     break; 
    case '.wav': 
     $mime_type = "audio/x-wav, audio/wav"; 
     break; 
} 

if(file_exists($filename)){ 
    $handle = fopen($filename, "rb"); 

    header('Content-Description: File Transfer'); 
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Type: '.$mime_type); 
    header('Content-length: ' . filesize($filename)); 
    header('Content-Disposition: attachment;filename="' . $filename.'"'); 

    while (!feof($handle)) { 
     echo fread($handle, 4096); 
     flush(); 
    } 
    fclose($handle); 
}else{ 
    header("HTTP/1.0 404 Not Found"); 
} 

questo è chiamato da www.example.com/listen?file=Test.en.wav

Per ora, quando vado in quella pagina, i download di file e le opere (la metà di quello che voglio), ma quando provo:

<embed src="www.example.com/listen?file=Test.en.wav"> 

Appare il lettore, ma il file non può/non può essere riprodotto.

Modifica: vorrei sapere se è possibile farlo suonare e come?

+0

Hai scritto tutto il codice giocatore di cui sopra? Echo stampa solo i componenti di un file, come è possibile riprodurre il file .wav? – Wookie88

+0

Siamo spiacenti, la mia domanda non è stata molto specifica. Voglio sapere come riprodurre il file, se è possibile. Grazie! – Benoit

+0

Ciao, non so se questo intenzionale ma 'echo fread ($ handle, 4096);' visualizzerà solo i primi 4 mB di un file ... – user1909426

risposta

0

Prova audio/vnd.wave.

Per RFC 2361

provare anche specificare un solo tipo MIME per ogni richiesta invece di un elenco separato.

case '.mp3': 
    $mime_type = "audio/mpeg"; 

Avrete probabilmente anche bisogno di installare qualcosa di simile Quicktime al fine di svolgere questi direttamente nel browser. Alcuni browser tentano il contenuto [MIME] sniffing per correggere i tipi MIME difettosi.

+0

Se Io uso solo 1 mimo per mpeg, smettono di giocare a firefox, .wav non voglio ancora giocare su firefox, ma funzionano in chrome. Grazie – Benoit

0

Rimuovere altre intestazioni e basta impostare "Content-Type"

header('Content-Type: '.$mime_type); 
Problemi correlati