作者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