有没有办法防止浏览器在新的浏览器窗口中打开mp3?
我有一个像
这样的mp3文件的正常链接 <a href="link_to_mp3">some.mp3</a>
当然您可以通过右键单击下载 - &gt;另存为。但有些用户不知道。因此,如果他们点击链接,就会打开一个新窗口,他们可以在那里收听该mp3。
问题是,我希望用户下载文件一次,而不是通过我的服务器听一千次;)
答案 0 :(得分:2)
仅通过html,您无法强制链接打开文件保存对话框。
相反,您可以通过PHP
和一些自定义标头as seen here
一个简单的download.php文件可能如下所示:
<?php
$file = $_GET['file'];
$dir = "path/to/files/";
if(!file)
{
die('file not found');
}
else
{
$local_file = $dir . $file['filename'];
$file = fopen($local_file, "r");
header("Cache-Control: public");
header('Content-Type: application/octet-stream');
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Transfer-Encoding: binary");
// set download rate
$download_rate = 100.0;
// fetch the file
fread($file, round($download_rate * 1024));
// close the file stream
fclose($file);
}
?>
您可以在其中指定保存所有文件的目录,以及下载速率(如果需要)以限制文件下载的速度。
忘记提及您之后会将链接更改为:
<a href="download.php?file=test.mp3">some.mp3</a>
其中test.mp3将更改为您的特定下载
答案 1 :(得分:1)
答案 2 :(得分:0)
感谢您的脚本。它没有为我解决,因为$ local_file变量不是正确的构建..不要问,不是真正的PHP专业版。你的帖子还是让我朝着正确的方向前进这是我的解决方案
<?php
$downloadfile = "directory/".$_GET['file'];
$filename = $_GET['file'];
$filesize = filesize($downloadfile);
header("Content-Type: audio/mpeg3");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Length: $filesize");
readfile($downloadfile);
exit;
?>
哦,对于其他的php-dummies:在脚本开始时没有白色的地方!!!