2010-08-04 29 views
7

J'ai un mp3 sur un serveur apache. Je veux qu'il soit téléchargé en tant que fichier lorsqu'un utilisateur visite le lien. Au lieu de quicktime, ou google chromes media player essayera de le diffuser.Arrêter le fichier mp3 du streaming dans les navigateurs

Y a-t-il un correctif pour cela avec les en-têtes? Ou est la seule option si «clic droit enregistrer sous»?

Modifier Voici mon en-tête. Safari a arrêté le streaming, mais le chrome se contente de le faire. Chrome semble ignorer ceci:

Je peux voir l'en-tête a été changé correctement:

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 

Y at-il d'autre dans l'en-tête qui la cause?

Modifier Faire quelques recherches, je trouve ceci: http://www.google.com/support/forum/p/Chrome/thread?tid=76de4f53f43f03d3&hl=en On dirait qu'il pourrait y avoir un bug en chrome empêchant de téléchargement.

Répondre

12

Vous souhaitez définir l'en-tête de réponse Content-Disposition sur "pièce jointe", et probablement le champ "nom de fichier" également.

Exemple:

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

Pour ce faire directement dans Apache, essayez de mettre ce qui suit dans votre fichier httpd.conf ou .htaccess:

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

EDIT:

Ajouté champ Nom de fichier à Exemple de configuration d'Apache, emprunté à this answer. Vous devez cependant être conscient des problèmes potentiels causés par les noms de fichiers contenant des caractères non US-ASCII: voir this question.

Vous pouvez également utiliser un nom de fichier de constante générique (puisque vous connaissez déjà l'extension) comme song.mp3, mais cela peut ne pas être une option selon les circonstances.

Une troisième option serait de créer un script pour servir ces fichiers MP3, qui peut définir l'en-tête et prendre soin de supprimer les caractères indésirables du nom de fichier.

+0

Merci de m'avoir indiqué la bonne direction. J'ai trouvé cet article sur la façon de forcer les téléchargements 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 ignore cela, ne sait pas pourquoi. Collé l'en-tête ci-dessus. – Keyo