2009-10-04 15 views
10

W ten sam sposób, w jaki można wyświetlać obrazy za pomocą php, do użycia w CAPTACHAS i tym podobne, czy można to zrobić z plikami audio?Czy mogę obsługiwać pliki MP3 w PHP?

Próbowałem to

<?php 

$track = "sometrack.mp3"; 

if(file_exists($track)) { 
    header('Content-type: audio/mpeg'); 
    header('Content-length: ' . filesize($track)); 
    header('Content-Disposition: filename="sometrack.mp3"'); 
    header('X-Pad: avoid browser bug'); 
    header('Cache-Control: no-cache'); 
    print file_get_contents($track); 
} else { 
    echo "no file"; 
} 

Używam Safari, który może odtwarzać pliki MP3. Kopiuje Safari w odpowiedni tryb, uzyskuję kontrolę QuickTime na kilka sekund, a następnie "No Video".

Próbuję chronić pliki przed nieautoryzowanym pobieraniem w przypadku, gdy zastanawiasz się, dlaczego chciałbym to zrobić.

+0

Powinieneś być w stanie - nie wiedzieć, dlaczego to nie działa, ale jesteś na właściwej linii. Spróbuj użyć polecenia wget/curl z wiersza poleceń w url, do którego masz dostęp, i sprawdź, czy działa zgodnie z oczekiwaniami. –

Odpowiedz

14

Twój Content-Dyspozycja powinna być:

header('Content-Disposition: attachment; filename="sometrack.mp3"'); 

Nie wiem, czy to jest problem chociaż. Polecam również przy użyciu readfile do wyjścia plik:

readfile($rSong); 

Ponadto, nie zaszkodzi użyć wyczerpujący nagłówek Content-Type i ustawić Content-Transfer-Encoding:

header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"); 
+1

te dodatkowe nagłówki zrobiły różnicę! Dzięki. Chociaż na razie usunąłem "załącznik", ponieważ chcę odtwarzać utwory w przeglądarce, ale będę musiał użyć go później, gdy ludzie będą pobierać utwory. Świetna rada, dzięki. – gargantuan

+0

Zauważ, że 'XSendfile' (na Apacha i nginx zh) może poważnie zmniejszyć obciążenie serwera/php i nadal używać dokumentów poza katalogiem głównym. – Wrikken

1

spróbuj użyć This Class obsługuje on wznawianie pobierania i ograniczenie prędkości. Wierz mi, że potrzebujesz go jako właściciela strony do pobrania mp3.