2012-01-16 16 views
13

Estoy tratando de hacerlo para que los mp3 en mi sitio se descarguen con un clic izquierdo en lugar de tener que hacer clic con el botón derecho y guardar como. Para poder hacerlo, tengo que configurar Content-Disposition: attachment. Este es mi primer sitio web, por lo que soy nuevo en la forma de hacerlo, pero ¿hago esto en mi marcado html o configuro esto de alguna manera con mi sitio de alojamiento?Cómo implementar Content-Disposition: archivo adjunto?

Aquí hay un ejemplo de cómo se ve mi marcado.

<div class="download"> 
<a href="MP3/Morgan Page, Sultan & Ned Shepard, and BT feat. Angela McCluskey.mp3" 
<img src="img/dlicon.png"/></a> 
</div> 
+3

Eso es una operación en el servidor y no se puede hacer a través de código HTML en el cliente. Necesitará una secuencia de comandos en el servidor que pueda actuar como servidor de descarga, y es la secuencia de comandos la que emitirá los encabezados Content-Disposition. –

+0

¿Podría proporcionarnos más información? ¿Qué servidor web estás usando? –

+0

Estoy usando HostGator.com –

Respuesta

17

Ejemplo de listas de MP3:

<a href="download.php?file=testing.mp3">Download MP3</a> 
<a href="download.php?file=testing2.mp3">Download MP3</a> 

download.php:

<?php 

$file = $_GET['file']; 

header('Content-type: audio/mpeg'); 

header('Content-Disposition: attachment; filename="'.$file.'"'); 

?> 
+4

El código anterior fallará con comillas dobles y caracteres no ASCII en los nombres de archivos (ver RFC 6266). –

+0

@JulianReschke Sí, OP debe reemplazar el nombre del archivo (vea la pregunta, el nombre del archivo es: Morgan Page, Sultán y Ned Shepard, y la hazaña de BT Angela McCluskey.mp3). Actualizaré mi respuesta. –

+6

Nota: a menos que realmente necesite controles de acceso en los mp3, es mejor simplemente configurar el servidor para que sirva esos mp3 con el conjunto de encabezado content-disposition. Usar PHP como un servidor de archivos ralentiza un poco las cosas, particularmente con archivos grandes. –

3

Como han dicho otros, que eso no se hace en HTML, y una solución dinámica (por ejemplo, , usando PHP) es overkill.

En su caso, configuraría el encabezado Content-Disposition en la configuración del servidor web. Para Apache, puede configurar el encabezado based on location, o tener un archivo .htaccess que coincida con ciertos nombres de archivos.

+2

Una solución dinámica para esto sucede todo el tiempo en el desarrollo de aplicaciones. Imagine, por ejemplo, tratar de tener que autenticarse antes de permitir contenido privilegiado. La comprobación de autenticación y la secuencia de archivos a menudo deben provenir de la misma solicitud. – JoshuaDavid

Cuestiones relacionadas