PHP檔案下載原理

Web開發者發表於2012-09-18

1、php下載原理圖

PHP檔案下載原理

2、檔案下載原始碼:

<?php
$file_name="哈哈.jpg";//需要下載的檔案
$file_name=iconv("utf-8","gb2312","$file_name");
$fp=fopen($file_name,"r+");//下載檔案必須先要將檔案開啟,寫入記憶體
if(!file_exists($file_name)){//判斷檔案是否存在
    echo "檔案不存在";
    exit();
}
$file_size=filesize("a.jpg");//判斷檔案大小
//返回的檔案
Header("Content-type: application/octet-stream");
//按照位元組格式返回
Header("Accept-Ranges: bytes");
//返回檔案大小
Header("Accept-Length: ".$file_size);
//彈出客戶端對話方塊,對應的檔名
Header("Content-Disposition: attachment; filename=".$file_name);
//防止伺服器瞬時壓力增大,分段讀取
$buffer=1024;
while(!feof($fp)){
    $file_data=fread($fp,$buffer);
    echo $file_data;
}
//關閉檔案
fclose($fp);
?>

3、檔案編碼問題解決方法:

  如果檔名是中文,php的函式不能識別中文檔名,一般如果程式編碼為utf-8,php的函式比較古老,只能識別gb2312編碼的中文,所以把中文用iconv(“原編碼”,”要轉成的編碼”,”要轉碼的字串”)函式可以轉碼。

  比如,把一個字串從utf-8轉碼為gb2312

  $file_name=iconv(“utf-8”,”gb2312”,”$file_name”);

相關文章