2012-01-16 8 views
13

Sto cercando di fare in modo che gli mp3 sul mio sito vengano scaricati facendo clic con il tasto sinistro invece di dover fare clic con il tasto destro del mouse e salvare come, Quindi, per fare ciò, devo impostare Content-Disposition: attachment. Questo è il mio primo sito Web, quindi sono nuovo su come farlo realmente, ma lo faccio nel mio markup html o lo imposto in qualche modo con il mio sito di hosting?Come implementare Content-Disposition: attachment?

Ecco un esempio di come appare il mio markup.

<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

Questa è un'operazione sul lato server e non può essere fatto tramite il codice HTML sul cliente. Avrai bisogno di uno script sul server che possa fungere da server di download, ed è quello script che emetterà le intestazioni Content-Disposition. –

+0

Potresti fornire ulteriori informazioni? Quale server web stai usando? –

+0

Sto usando HostGator.com –

risposta

17

Esempio di liste 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

Il codice sopra avrà esito negativo con virgolette doppie e caratteri non ASCII nei nomi dei file (vedere RFC 6266). –

+0

@JulianReschke yes, OP deve sostituire il nomefile (vedi domanda, il nome del file è: Morgan Page, Sultan & Ned Shepard e BT feat. Angela McCluskey.mp3). Aggiornerò la mia risposta –

+6

Nota: a meno che non si abbia effettivamente bisogno di controlli di accesso sugli mp3, è meglio configurare il server per servire quegli mp3 con il set di intestazione content-disposition. L'utilizzo di PHP come file server rallenta un po 'le cose, in particolare con file di grandi dimensioni. –

3

Come altri hanno detto, non fai che in HTML, e una soluzione dinamici (per esempio , usando PHP) è eccessivo.

Nel tuo caso, configurerei l'intestazione Content-Disposition nella configurazione del server web. Per Apache, è possibile impostare l'intestazione based on location o un file .htaccess corrispondente a determinati nomi di file.

+2

Una soluzione dinamica per questo accade continuamente nello sviluppo di app. Immagina ad esempio di dover effettuare l'autenticazione prima di consentire il contenuto privilegiato. Il controllo dell'autenticazione e il flusso di file spesso devono provenire dalla stessa richiesta. – JoshuaDavid

Problemi correlati