我试图制作这样的下载页面:
<?php
$filetype = $_POST['filetype'];
echo "$filetype";
if( $filetype == '256mp3'){
header('Content-disposition: attachment; filename=mp3.html');
header('Content-type: text/html');
readfile('mp3.html');
}
if($filetype == 'apple lossless' ){
header('Content-disposition: attachment; filename=applelossless.html');
header('Content-type: text/html');
readfile('applelossless.html');
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
</body>
</html>
我使用表单发布变量$ filetype,然后选择我想要下载的文件。
我收到此错误
Warning: Cannot modify header information - headers already sent by (output started at /home/thetempers/www/presskit/download.php:5) in /home/thetempers/www/presskit/download.php on line 13
Warning: Cannot modify header information - headers already sent by (output started at /home/thetempers/www/presskit/download.php:5) in /home/thetempers/www/presskit/download.php on line 14
为什么这不起作用标签之前没有空格
答案 0 :(得分:2)
因为您在标题声明之前有echo $filetype
。如果要设置标题,则无法输出任何内容。如果你真的必须,那么试着看ob_start。
另外,我没有得到你想要达到的目标,早些时候你已经使用readfile()
输出了html,但是后来你输出了另一个<html>
,是不是有意?
答案 1 :(得分:1)
删除此
echo“$ filetype”;
答案 2 :(得分:0)
我在您的代码中看到了两个潜在问题:
行echo "$filetype";
将数据写入客户端,导致发送标头,然后对header()
的后续调用失败。
在每次致电exit;
后,您可能需要致电readfile()
(假设readfile()
不以exit;
结尾),以防止<{1}}条件下的html被发送到浏览器。
答案 3 :(得分:0)
哦,男人,我感觉很朦胧,哈哈。
这是有效的。谢谢你们!
if( $filetype == '256mp3'){
header('Content-disposition: attachment; filename=mp3.html');
header('Content-type: text/html');
readfile('mp3.html');
}
if($filetype == 'apple lossless' ){
header('Content-disposition: attachment; filename=applelossless.html');
header('Content-type: text/html');
readfile('applelossless.html');
}
?>