所以,我需要一点帮助。我有一个托管一些mp3的网站。当用户点击下载URL时,它直接链接到一个名为downloadmp3.php的文件,该文件在url中有2个参数...下面包含了php文件,它基本上应该强制用户保存mp3。 (不要在浏览器中播放或任何东西)。
那不会发生。相反,似乎该文件在ascii中写入浏览器。好像这是写出来的实际mp3文件。
这是我的downloadmp3.php文件...请问,这段代码有什么问题。 它适用于我当地的LAMP(Windows上的Bitnami Wampstack)....也就是说,在我的本地测试环境中,它将文件发送到我的broswer,我可以保存它。当我将它上传到真实服务器时,它基本上写出了mp3文件。
这是罪魁祸首文件,downloadmp3.php ...请帮忙
<?php
include 'ngp.php';
$file = $_GET['songurl'];
$songid = $_GET['songid'];
increasedownloadcount($songid);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: audio/mpeg');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
ob_clean();
flush();
readfile($file);
exit;
}
?>
顺便说一句,这个网站只托管mp3 - 没有其他音频或文件格式。因此,这个downloadmp3.php脚本应该理想地询问用户他们想要保存这个文件的位置。
提前感谢您的帮助。
答案 0 :(得分:0)
我认为offsetTop
应该在引号中:
offsetHeight
答案 1 :(得分:0)
将内容类型值更改为text / plain。使用此浏览器不会识别它并且不会播放该文件。相反,它将在客户机上下载文件。
答案 2 :(得分:0)
似乎标题太多了。我相信他们会做某些事情......但是这段代码可以运作。
此代码适用于MP3文件....下载到文件。玩没有问题。
if(isset($_GET['file'])){
$file = $_GET['file'];
header('Content-type: audio/mpeg');
header('Content-Disposition: attachment; filename=".$file.'"');
readfile('path/to/your/'.$file);
exit();
}
您可以使用ajax调用或以下方式访问它:
<a id="dl_link" href="download.php?file=<>file-you-wish-to-download<>" target="_blank">Download this file</a>
希望这有一些用处