【发布时间】:2015-08-30 16:10:32
【问题描述】:
我的音频位于 /home/user/audio。我知道阻止下载是不可能的,但我只想让大多数人很难做到。我关注了这个帖子:setting-up-apache-to-serve-php-when-an-mp3-file-is-requested
但人们仍然可以通过右键单击音频元素时选择“将音频另存为”来轻松下载 mp3。
这是音频链接页面上的代码:
$link="http://www.example.com/getaudio.php?name=$filename";
echo '<audio src="'.$link.'"' . ' autoplay controls>';
这里是getaudio.php
$name=$_GET['name'];
$filename="/home/user/audio/".$name.".mp3";
if (file_exists($filename)) {
header("Content-Type: audio/mpeg");
header('Content-Length: ' . filesize($filename));
header('Content-Disposition: inline; filename="blah.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($filename);
exit;
} else {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
echo "no file";
}
知道为什么尽管如此,人们可以如此轻松地下载 mp3 吗?在链接的示例中,我没有看到任何明显的遗漏,但我一定遗漏了一些明显的东西!
编辑:我的帖子与提到的不同,因为我试图避免使用 javascript 方法,而是使用 php,并禁用“将音频另存为”菜单项。最后,我最终使用了一条 js 行来禁用“将音频另存为”菜单项,因为音频元素本身不允许这样做。
谢谢
【问题讨论】:
-
我会说不要打扰。甚至 youtube 也可以下载它的东西。实际上有一个很好的收藏
-
我很想不想打扰......但也许在 php 文件中我可以检查引用者?我至少想让人们使用 3rd 方插件来获取音频,而不是给他们一个简单的“另存为”链接......