2010-08-17 160 views
4

我有一個網站,用戶可以從Flash播放器播放我的音樂或下載單個歌曲(如mp3)。現在,如果你點擊下載鏈接,他們只是在瀏覽器中播放。我可以做到這一點,所以默認情況下會彈出下載框,而不會壓縮製作用戶rt的文件。點擊?下載mp3,而不是默認在瀏覽器中播放?

我有我有看起來像這樣的鏈接index.php頁面(從MySQL動態拉文件名:

<table> 
. 
. 
. 
<td> 
    <?php include 'Media/' . $row['type'] . '/' . $row['folder_name'] . '/download.php' ?> 
</td> 

,然後的download.php有這樣的:

<div class="downloadCell"> 
    <h3>Downloads:</h3> 
    <ul> 
     <li> 
      <a href="auto_download.php?path=Media/<?php echo $row['type'] . '/' . $row['folder_name'] ?>/Chemtengure.mp3">Chemtengure</a> 
     </li> 
    </ul> 
</div> 

,我把與index.php同一目錄下的auto_download.php:

auto_download.php:

$path = $_GET['path']; 
header('Content-Disposition: attachment; filename=' . basename($path)); 
readfile($path); 

回答

6

您需要將這個HTTP標頭添加到您的響應,使瀏覽器強制下載:

Content-Disposition: attachment; filename=your_filename.mp3 

例如,如果您正在使用服務器端的PHP,你可以創建一個腳本發送上述頭,然後是實際的文件內容:

$path = $_GET['path']; 
header('Content-Disposition: attachment; filename=' . basename($path)); 
readfile($path); 

如果調用此腳本download.php,然後鏈接到download.php?path=/path/to/your/file.mp3將會使瀏覽器彈出了一個file.mp3下載對話框。

+0

你能詳細說一下嗎?恐怕我不太明白如何編碼。這個GET只是在頭部部分 - 或者它是一個包含?或 - 我仍然是一個noob。 :D – Joel 2010-08-17 06:28:19

+1

您在這裏看到的代碼是您需要的一切。只要把它放在一個php文件中,並點下載到這個文件,就像'get this song' – naugtur 2010-08-17 06:35:34

+0

我沒有得到它的工作 - 我想因爲我增加了一些複雜性(從mySQL動態拉動下載文件名,我已更新我的問題分享那些細節 – Joel 2010-08-17 06:41:26

相關問題