我已经尝试了很多PHP脚本来构建强制下载页面,但每次都失败了。我在每个页面上都有一个下载链接,然后单击我希望用户被重定向到另一个页面并开始下载。
我将参数中的完整绝对路径网址传递为<a href="download.php?filename=http://www.abc.com/maps/map.pdf" target="_blank">Download PDF</a>
我的download.php文件的代码是
<?php
$file = $_GET["filename"];
$file_name = basename($file);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=$file_name");
header("Content-Length: " . filesize($file)); //added this line
readfile($file);
?>
如果您的下载没有开始
<a href="<?php echo $_GET["filename"]; ?>" target="_blank">click here</a>
错误:
Download.php is getting the parameter filename value correctly but says
Warning: Cannot modify header information - headers already sent by (output started at /home/content/72/11973872/html/filerepairtool/down/download.php:9) in /home/content/72/11973872/html/filerepairtool/down/download.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at /home/content/72/11973872/html/filerepairtool/down/download.php:9) in /home/content/72/11973872/html/filerepairtool/down/download.php on line 21
我想在大多数软件下载站点中构建一个类似下载页面的页面,点击下载链接将我们带到另一个URL,上面写着“您的下载应该在10秒内开始(第二次倒计时)”或点击此处下载如果它没有启动“
请分享解决方案
答案 0 :(得分:0)
你的代码签出,我测试了它。
还有其他因素造成这种情况。
您最有可能在<?php
之前有一个空格,在测试时会再现确切的错误消息。
您还可以使用byte order mark或其他形式的输出,用作附带文件等。
可能的情况:
等
<强> 旁注 强> :
根据我在您发布的another question中看到的内容,您可能在PHP上面包含一个文件。
以下情况会导致错误:(考虑为标题之前的输出)
<?php
include 'file.php';
?>
<?php
$file = $_GET["filename"];
$file_name = basename($file);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=$file_name");
header("Content-Length: " . filesize($file)); //added this line
readfile($file);
?>
将会:
<!DOCTYPE html>
<head>
<title>Page title</title>
<body>
Hello world
<?php
$file = $_GET["filename"];
$file_name = basename($file);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=$file_name");
header("Content-Length: " . filesize($file)); //added this line
readfile($file);
?>
</body>
</html>
可能的快速解决方法: ,但并不总是成功。