2010-08-04 3 views
7

Ho un mp3 su un server Apache. Voglio che venga scaricato come file quando un utente visita il link. Invece quicktime, o google chromes media player proverà a trasmetterlo in streaming.Arresta file mp3 dallo streaming nei browser

C'è una soluzione per questo con le intestazioni? Oppure è l'unica opzione in modo che "fai clic con il pulsante destro del mouse su Salva come"?

Modifica Ecco la mia intestazione. Safari ha interrotto lo streaming, ma Chrome continua a farlo. Chrome sembra ignorare questo:

posso vedere l'intestazione è stata modificata in modo corretto:

Date Wed, 04 Aug 2010 00:14:35 GMT 
Server Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.11 
Last-Modified Tue, 03 Aug 2010 04:37:01 GMT 
Etag "2bbd692-79597d-48ce3de3f5540" 
Accept-Ranges bytes 
Content-Length 7952765 
Content-Disposition attachment 
Keep-Alive timeout=5, max=100 
Connection Keep-Alive 
Content-Type audio/mpeg 

C'è qualcos'altro nell'intestazione che potrebbe causare questo?

Modifica Facendo qualche ricerca ho trovato questo: http://www.google.com/support/forum/p/Chrome/thread?tid=76de4f53f43f03d3&hl=en Sembra che ci potrebbe essere un bug in cromo impedendole di download.

risposta

12

Si desidera impostare l'intestazione di risposta Content-Disposition su "allegato" e probabilmente anche sul campo "nomefile".

Esempio:

Content-Disposition: attachment; filename=foo.mp3; 

per raggiungere questo obiettivo direttamente in Apache, prova a mettere quanto segue nel httpd.conf o .htaccess del file:

<FilesMatch "\.(?i:mp3)$"> 
    ForceType audio/mpeg 
    SetEnvIf Request_URI "^.*/?([^/]*)$" FILENAME=$1 
    Header set Content-Disposition "attachment; filename=%{FILENAME}e" 
    UnsetEnv FILENAME 
</FilesMatch> 

EDIT:

Aggiunto campo il nome del file per Esempio di configurazione di Apache, preso in prestito da this answer. È necessario essere consapevoli, tuttavia, di potenziali problemi causati da nomi di file con caratteri non ASCII negli stessi: vedere this question.

In alternativa, è possibile utilizzare un nome file generico costante (poiché si conosce già l'estensione) come song.mp3, ma questa potrebbe non essere un'opzione a seconda delle circostanze.

Una terza opzione sarebbe quella di creare uno script per servire questi MP3, che può impostare l'intestazione e occuparsi di rimuovere i caratteri indesiderati dal nome file.

+0

Grazie per avermi indicato nella giusta direzione. Ho trovato questo articolo su come forzare i download http://www.thingy-ma-jig.co.uk/blog/06-08-2007/force-a-pdf-to-download – Keyo

+0

http: //www.jtricks .com/bits/content_disposition.html – NullUserException

+0

Chrome sta ignorando questo, non so perché. Incollato l'intestazione sopra. – Keyo