2010-08-17 159 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

相关问题