2010-08-04 6 views
7

Ich habe ein MP3 auf einem Apache-Server. Ich möchte, dass es als Datei heruntergeladen wird, wenn ein Benutzer den Link besucht. Stattdessen wird Quicktime oder Google Chrome Media Player versuchen, es zu streamen.Stop MP3-Datei von Streaming in Browsern

Gibt es eine Lösung dafür mit Kopfzeilen? Oder ist die einzige Option, also 'Rechtsklick speichern unter'?

Bearbeiten Hier ist meine Überschrift. Safari hat aufgehört zu streamen, aber Chrome setzt dies fort. Chrome scheint dies zu ignorieren:

I der Header korrekt geändert wurde, sehen kann:

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 

Gibt es noch etwas in der Kopfzeile, die dies verursachen würde?

bearbeiten einige der Forschung ich diese gefunden: http://www.google.com/support/forum/p/Chrome/thread?tid=76de4f53f43f03d3&hl=en Sieht aus wie es ist ein Fehler in Chrom könnte es aus dem Download zu verhindern.

Antwort

12

Sie möchten den Antwortkopf Content-Disposition auf "Anhang" und wahrscheinlich auch das Feld "Dateiname" setzen.

Beispiel:

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

dies in Apache direkt zu erreichen, versuchen die folgende Umsetzung in Ihrem httpd.conf oder .htaccess Datei:

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

EDIT:

Added Dateiname Feld Apache-Konfigurationsbeispiel, entliehen von this answer. Sie sollten jedoch auf mögliche Probleme achten, die durch Dateinamen mit Nicht-US-ASCII-Zeichen verursacht werden: siehe this question.

Alternativ könnten Sie einen generischen Konstanten Dateinamen verwenden (da Sie die Erweiterung bereits kennen) wie song.mp3, aber dies ist möglicherweise keine Option abhängig von Ihren Umständen.

Eine dritte Option wäre, ein Skript zu erstellen, um diese MP3s zu bedienen, die den Header festlegen und das Entfernen unerwünschter Zeichen aus dem Dateinamen vornehmen können.

+0

Danke, dass Sie mich in die richtige Richtung weisen. Ich fand diesen Artikel darüber, wie man Downloads erzwingt http://www.thingy-ma-jig.co.uk/blog/06-08-2007/force-a-pdf-download – Keyo

+0

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

+0

Chrome ignoriert dies, weiß nicht warum. Den Header oben eingefügt. – Keyo