2013-04-17 7 views
5

Muszę zbudować nagłówek pliku .wav, aby można go było odtworzyć w elemencie.Nagłówek PHP do pobrania pliku .wav, ale nie można go odtworzyć w osadzeniu

$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"); 
} 

ten nazywany jest przez www.example.com/listen?file=Test.en.wav

Teraz, kiedy idę na tej stronie, że pliki do pobrania plików i prace (połowa tego, co chcę), ale gdy próbuję:

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

Odtwarzacz pojawia się, ale plik nie jest/nie może być odtwarzany.

Edytuj: Chciałbym wiedzieć, czy można go odtworzyć i jak?

+0

Wysłany powyżej cały kod odtwarzacza? Echo wypisuje tylko znaki pliku, jak to jest GRAć .wav? – Wookie88

+0

Niestety, moje pytanie nie było zbyt szczegółowe. Chcę wiedzieć, jak odtworzyć plik, jeśli to możliwe. Dziękuję Ci! – Benoit

+0

Witam, nie wiem, czy to zamierzone, ale "echo fread" ($ handle, 4096); "wyświetli tylko pierwsze 4 mB pliku ... – user1909426

Odpowiedz

0

Wypróbuj audio/vnd.wave.

Per RFC 2361

Sponsorowane tylko określenia pojedynczego typu MIME na żądanie zamiast listy oddzielone przecinkami.

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

Będziesz prawdopodobnie także zainstalować coś podobnego Quicktime aby odtwarzać je bezpośrednio w przeglądarce. Niektóre przeglądarki próbują podsłuchiwać zawartość [MIME], aby naprawić wadliwe typy MIME.

+0

Jeśli Używam tylko 1 mime na mpeg, przestają grać w firefox, .wav wciąż nie chce grać na firefoxie, ale działają w chrome. Dziękuję Ci – Benoit

0

usunąć inne nagłówki i wystarczy ustawić "Content-Type" nagłówka

header('Content-Type: '.$mime_type); 
Powiązane problemy