2012-01-16 14 views
13

Staram się, aby mp3 na mojej stronie były pobierane przez kliknięcie lewym przyciskiem myszy, zamiast klikać prawym przyciskiem myszy i zapisywać jako, więc aby to zrobić, muszę ustawić załącznik Content-Disposition:. To jest moja pierwsza strona internetowa, więc jestem nowy, jak to zrobić, ale czy robię to w moim znaczniku html, czy też mam to jakoś ustawić w mojej witrynie hostingowej?Jak zaimplementować Content-Disposition: załącznik?

Oto przykład tego, jak wygląda mój znacznik.

<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

To operacja po stronie serwera, a nie można tego zrobić za pomocą kodu HTML na klient. Będziesz potrzebować skryptu na serwerze, który będzie działał jako serwer pobierania, i to jest ten skrypt, który wyda nagłówki Content-Disposition. –

+0

Czy możesz podać więcej informacji? Z jakiego serwera WWW korzystasz? –

+0

Używam HostGator.com –

Odpowiedz

17

Przykładowy list 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

Powyższy kod zakończy się niepowodzeniem z podwójnymi cudzysłowami i znakami spoza zestawu ASCII w nazwach plików (patrz RFC 6266). –

+0

@JulianReschke yes, OP powinien zastąpić nazwę pliku (patrz pytanie, nazwa pliku to: Morgan Page, Sultan & Ned Shepard i BT feat. Angela McCluskey.mp3). Zaktualizuję moją odpowiedź. –

+6

Uwaga: chyba że faktycznie potrzebujesz kontroli dostępu do plików mp3, lepiej po prostu skonfigurować serwer, aby wyświetlał te pliki mp3 z zestawem nagłówków treści. Używanie PHP jako serwera plików spowalnia nieco działanie, szczególnie w przypadku dużych plików. –

3

Jak mówili inni, nie rób tego w HTML i dynamiczne rozwiązania (np przy użyciu PHP) to przesada.

W twoim przypadku skonfiguruję nagłówek Content-Disposition w konfiguracji serwera WWW. W przypadku Apache można ustawić nagłówek based on location lub mieć plik .htaccess pasujący do określonych nazw plików.

+2

Dynamiczne rozwiązanie tego problemu dzieje się cały czas podczas tworzenia aplikacji. Wyobraź sobie na przykład, że musisz uwierzytelnić się przed zezwoleniem na treści uprzywilejowane. Sprawdzanie autentyczności i strumień plików często muszą pochodzić z tego samego żądania. – JoshuaDavid