作者wade5300606 (wade)
看板PHP
标题[请益] php 档案下载的问题
时间Sun Apr 15 23:33:37 2012
各位大大好,小弟想要透过header方式下载上传server上的档案,可是不知道为什麽
下载下来的东西都是失败的,打开都显示错误,但是mp3的档案又是没有问题,
不知道各位大大有没有遇过这样的问题,我使用xampp1.77架的网站 附上程式码
都是参考网路上的文章~~$p是档案的名称
$len = filesize($p);
$filename = basename($p);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
//禁止下面几种类型的档案被下载
case "php":
case "htm":
case "html":
case "txt": die("Cannot be used for ". $file_extension ." files!");
break;
default: $ctype="application/force-download";
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Cache-Control: private', false);
header("Content-Description: File Transfer");
header("Content-Type: $ctype");
$header="Content-Disposition: attachment; filename=".$p.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
readfile($p);
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.242.0.16
1F:→ tkdmaf:11622篇你参考看看。 04/15 23:54
2F:→ wade5300606:改成他的写法还是一样的结果~"~ 04/16 01:23
3F:推 JYHuang:apache有装deflat或gzip吗? 04/16 09:52
4F:→ wade5300606:哪边看有没有装呢?? 应该是没有~ 04/16 15:01
5F:→ MOONRAKER:phpinfo()吧 04/16 16:37
6F:→ wade5300606:我看到我的apaceh里面有写HTTP_ACCEPT_ENCODING 04/16 23:07
7F:→ wade5300606:gzip,deflate,sdch 这样是有装还是没装呢? 04/16 23:07
8F:推 dio833:推!用xampp1.7.3测你的程式码,正常,我也很好奇你的问题 04/17 00:55
9F:→ wade5300606:该不会是环境的问题吧!?? @@ 04/19 01:28
10F:推 fatsooo:我最近也碰到此问题,网路上有人说是网页档案编码的问题 04/20 19:05
11F:→ fatsooo:若在windows下,要把 Encode in UTF-8 without BOM改掉 04/20 19:05
12F:→ fatsooo:换成utf8就好> 04/20 19:05
13F:→ fatsooo:但我是linux环境,所以没办法测试,不知是否知道解法的@@ 04/20 19:06
14F:推 fatsooo:我试出来了,先前的文章也有提到类似的方法 04/20 20:00
15F:→ fatsooo:在程式的最前端加上 ob_end_clean(); 便可下载到正常的档 04/20 20:01
16F:→ wade5300606:谢谢大大 可以正常使用了 看来得去查一下为什麽~"~ 04/25 09:25