2009-10-04 36 views
10

Nello stesso modo in cui è possibile pubblicare immagini con php, per l'uso in CAPTACHAS e simili, è possibile fare lo stesso con i file audio?Posso servire file MP3 con PHP?

Ho provato questo

<?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"; 
} 

sto usando Safari, in grado di riprodurre file MP3. Spinge Safari nella giusta modalità, ottengo i controlli Quicktime per alcuni secondi, quindi "Nessun video".

Sto cercando di proteggere i file da download non autorizzati nel caso ti stia chiedendo perché vorrei farlo.

+0

Dovreste essere in grado di - non so perché questo non funziona, ma siete sulla linea giusta. Prova wget/arriccia dalla riga di comando sull'URL a cui accedi il file e controlla che funzioni come previsto. –

risposta

14

tuo Content-Disposition dovrebbe essere:

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

Non sono sicuro se questo è il problema però. Vorrei inoltre consiglia di utilizzare readfile per l'output del file:

readfile($rSong); 

Inoltre, non sarebbe male utilizzare un'intestazione esaustivo Content-Type, e impostare il Content-Transfer-Encoding:

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

quelle intestazioni extra hanno fatto la differenza! Grazie. Anche se per ora ho rimosso "attachment" dal momento che voglio riprodurre i brani nel browser, ma dovrò usarlo più tardi quando le persone scaricano le tracce. Ottimo consiglio, grazie. – gargantuan

+0

Si noti che 'XSendfile' (su Apacha e nginx otoh) può ridurre seriamente il carico sul server/php, e comunque utilizzare i documenti al di fuori della root del documento. – Wrikken

1

prova usando This Class supporta il resume di download e il limite di velocità credetemi ne avete bisogno come proprietario di download di mp3 sito web