php header 下载zip文件的问题

是一个动态php文件我把phpheader代码写进去但是打开这个动态页面的时候能获取到文件路径并且把这个文件.zip依html方式的打开了全是乱码请问怎么才能使打开这个页... 是一个动态php文件 我把php header 代码写进去 但是打开这个动态页面的时候能获取到文件路径 并且把这个文件.zip依html方式的打开了 全是乱码
请问怎么才能使打开这个页面 弹出点击弹出下载 而不是把这个.zip文件依html方式打开

<?php
error_reporting(0);
$referer = $_SERVER['HTTP_REFERER'];
$selfurl = $_SERVER['HTTP_HOST'];
/*
if(false == strpos($referer,$selfurl))
{
die(" Request Error.! ");
exit(1);
}
*/
require_once(dirname(__FILE__)."/../include/common.inc.php");
require_once(DEDEINC.'/download.class.php');
$t1 = ExecTime();
if(empty($okview))
{
$okview = '';
}
if(isset($arcID))
{
$aid = $arcID;
}

$arc = new Archives($aid);
if($arc->IsError)
{
ParamError();
}
$arc->Display();
if(isset($arcID))
{
$aid = $arcID;
}
$arcID = $aid = (isset($aid) && is_numeric($aid)) ? $aid : 0;
if($aid==0)
{
die(" Request Error! ");
}
$row = $dsql->GetOne("Select * From `#@__icons` where aid='$aid' ");
$str = $row['icodown'];
if(substr_count($str,"/uploads/soft/")>0){
$file = ltrim($str,"/uploads/soft/");
$link = "<?php echo $cfg_basehost; ?>";
$url = "".$link."".$file."";
//echo "$url";
$get_url = urldecode($url);
$file_name = basename($get_url);
$get_url = "../uploads/soft/" . $file;
ob_end_clean();
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename='.'123_'.$file_name);
header('Content-Length: '.filesize($get_url));
error_reporting(0);
readfile($get_url);
flush();
ob_flush();
exit;
}else{
$get_url = urldecode($str);
$file_name = basename($get_url);
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename='.'123_'.$file_name);
header("Connection: close");
readfile($get_url);
}
exit;
?>
为什么不弹出下载 而是直接把这个zip的内容打印出来了
展开
 我来答
卓尔安wi
2012-07-09 · 超过11用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:38.2万
展开全部
<?php
include("class.php");
date_default_timezone_set("PRC");//设置时区为中国
$filetype_array = array("as"=>"Flash ActionScript File","bmp"=>"BMP图像"
,"doc"=>"Microsoft Word文档","rar"=>"WinRAR 压缩文档",
"ppt"=>"Microsoft PowerPoint 演示文稿","txt"=>"文本文档",
"xls"=>"Microsoft Excel 工作表","gif"=>"GIF图像",
"jpg"=>"JPEG图像","jpeg"=>"JPEG图像","png"=>"PNG图像",
"html"=>"HTML Document","htm"=>"HTML Document",
"mp3"=>"MP3 格式声音","chm"=>"已编译的HTML帮助文件",
"fla"=>"Flash Document","mdb"=>"Microsoft Access 应用程序",
"pdf"=>"PDF 文件","swf"=>"Flash Movie","xml"=>"XML 文档",
"zip"=>"WinRAR ZIP 压缩文件","asf"=>"Windows 音频/视频文件",
"wmv"=>"Windows Media 音频/视频文件","avi"=>"视频剪辑",
"mpeg"=>"电影剪辑","exe"=>"应用程序","gz"=>"WinRAR 压缩文件",
"tar"=>"WinRAR 压缩文件","tiff"=>"TIFF 文件");

//以上为判断函数
$bai="./images";
$nba=opendir($bai);
$i=1;
echo "<table border=1px color:red>";
echo "<tr><td>I D</td><td>文件名称</td><td>大小</td><td>最后修改时间</td><td>类型</td><td>下载</td></tr>";
while ($wnba=readdir($nba))
{

if($wnba != "." && $wnba != "..")

{
$path=$bai."/".$wnba;
$dir=new dir($path);
$str[]=
"<tr>".
"<td>".$i++."</td>".
"<td>".$wnba."</td>".
"<td>".$dir->getsize()."</td>".
"<td>".$dir->gettime()."</td>".
"<td>".$dir->gettype()."</td>".
"<td><a href='$path'><img src=".$dir->getIcon()."></a></td>".
"</tr>\n";

}
$lines=15;//每页15行
if( " "==$cur_page) $cur_page=1;//当前页
$page=ceil(count($str)/$lines);//页数
echo $page;
for($i=($cur_page-1)*$lines ; $i <$cur_page*$lines ; $i++){//分段读出数组
echo "$str[$i] ";
}

}
echo "</table>";
closedir($nba);

?>
<table width=100%> <tr> <td align=center>
<?
for ($i=1;$i <=$page;$i++){
$i==$cur_page ? $a= " <b> ".$i. " </b> " : $a= " <a href= ".wjclass1.php. "?cur_page=$i> ".$i. " </a> ";
echo "$a ";
}
?>
</td> </tr> </table>
</td>
</tr>
</table>
kwcms
2012-07-09 · 超过31用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:98万
展开全部
上面的代码有问题。
试试这个代码:

<?php
$get_url = "x.zip";
ob_end_clean();
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename='.'123_'.$get_url);
header('Content-Length: '.filesize($get_url));
error_reporting(0);
readfile($get_url);
flush();
ob_flush();
exit;
?>

我稍微修改了 一点儿,就可以正常下载。
追问
谢谢楼上 还是不行 我加入变量以后 还是和以前一样 读取到了文件 但是直接把这个文件依html方式打开了 全乱码 没有弹出下载
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fa3c1401a
2012-07-09 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:111万
展开全部
你这个是IE下载设置的问题,不是程序的问题,设置IE就可以解决了
追问
你好 如果是IE的问题 那么我用火狐 谷歌 其它浏览器打开 还是同样的 问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式