我有一个包含歌曲的页面,每首歌曲旁边都有一个下载按钮:
<table>
<tr>
<td>Off the Grid</td>
<td><a href="http://example.com/php/download.php?Off_the_Grid.mp3">Download</a></td>
</tr>
<tr>
<td>Far-Sighted</td>
<td><a href="http://example.com/php/download.php?Far_Sighted.mp3">Download</a></td>
</tr>
</table>
然后我有以下强制下载的脚本:
<?php
$audioFile = "Off_the_Grid.mp3";
$fileName = $_GET['$audioFile'];
// Fetch the file info.
$filePath = '../audio/' . $audioFile;
if(file_exists($filePath)) {
$fileName = basename($filePath);
$fileSize = filesize($filePath);
// Output headers.
header("Cache-Control: private");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header("Content-Length: ".$fileSize);
header("Content-Disposition: attachment; filename=".$fileName);
// Output file.
readfile ($filePath);
exit();
}
else {
die('The provided file path is not valid.');
}
?>
我的目标是把这个脚本变成一个函数,这样当点击歌曲的下载链接时——例如,“Far-Sighted”——“Far-Sighted”并且只有“Far-Sighted”被强制下载。而如果点击“Off the Grid”下载链接,该功能将为“Off the Grid”运行。等等。对于我发布的所有歌曲。
上面的代码可以强制下载“Off the Grid”。但是,我试图让它强制下载任何被点击的歌曲。现在,如果我点击“Far-Sighted”旁边的“Download”,那么根据我发布的代码,“Off the Grid”会下载,而“Far-Sighted”不会下载。显然,《远见卓识》应该下载;但是,我被困住了:-/
有没有办法干净地做到这一点?我一直在想办法做到这一点,但无济于事。有没有办法让我的变量“$audiofile”根据点击的歌曲下载链接改变它的值?我打算为每首歌曲创建 php 文件,然后将歌曲独有的脚本发布到那里,或者只发布一个 php 文件,其中包含为每首歌曲量身定制的多个脚本实例。但这似乎很荒谬。
有没有很好的方法来实现这一点?谢谢!