日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


 

我們先來看下載函數的兩個形參,function download($file_name,$file_sub_dir)

$filename定義了文件的名稱,$file_sub_dir定義了文件的路徑名,其格式為“/XXX/”,例如"/file/".

接著用一個變量保存下載文件的路徑

$file_path=$_SERVER["DOCUMENT_ROOT"].$file_sub_dir.$file_name;

$_SERVER["DOCUMENT_ROOT"]是服務器的根目錄,從根目錄開始找代表使用的是絕對路徑

然后我們該截取文件的后綴了,如doc、xls、jpg等,這樣做的目的是判斷根據不同類型的文件使用不同的返回方式。

如jpg則使用header("Content-type:image/jpeg");
二進制文件則使用header("Content-type:Application/octet-stream");
截取后綴用這句$extension=substr($file_name,strrpos($file_name,"."));
strrpos($file_name,".")這個函數的意思是找到后綴前面的小點(.)所在的索引號
substr($file_name,strrpos($file_name,"."))是從索引號開始向后截取

為了讓代碼更加嚴謹,還是應該判斷一下文件是否存在,不存在則返回

if(!file_exists($file_path)){
 echo "文件不存在";
 return;
 }

這幾句是下載的通常寫法

//按照字節大小返回
 header("Accept-Ranges:bytes");
 //返回文件大小
 header("Accept-Length:$file_size");
 //這里客戶端彈出的對話框,對應的文件名
 header("Content-Disposition:attachment;filename=".$file_name);

為了緩解壓力,最好將數據一點一點讀取

$buffer=1024;

$file_count=0;

//這句話用于判斷文件是否結束

while(!feof($fp) && ($file_size-$file_count>0)){

$file_data=fread($fp,$buffer);

//統計讀了多少個字節

$file_count+=$buffer;

echo $file_data; //將數據完整的輸出

}

下面是完整代碼

 //下載函數
 public function download($file_name,$file_sub_dir){
 //對中文文件應該進行轉碼
 //$file_name=iconv("utf-8","gb2312",$file_name);
 $file_path=$_SERVER["DOCUMENT_ROOT"].$file_sub_dir.$file_name;
 $extension=substr($file_name,strrpos($file_name,"."));
 if(!file_exists($file_path)){
 echo "文件不存在";
 return;
 }
 $fp=fopen($file_path,"r");
 //獲取下載文件的大小
 $file_size=filesize($file_path);
 //返回的文件
 if($extension==".jpg"){
 header("Content-type:image/jpeg");
 }else{
 header("Content-type:application/octet-stream");
 }
 //按照字節大小返回
 header("Accept-Ranges:bytes");
 //返回文件大小
 header("Accept-Length:$file_size");
 //這里客戶端彈出的對話框,對應的文件名
 header("Content-Disposition:attachment;filename=".$file_name);
 //向客戶端回送數據
 $buffer=1024;
 $file_count=0;
 //這句話用于判斷文件是否結束
 while(!feof($fp) && ($file_size-$file_count>0)){
 $file_data=fread($fp,$buffer);
 //統計讀了多少個字節
 $file_count+=$buffer;
 echo $file_data; //將數據完整的輸出
 }
 //關閉文件
 fclose($fp);
 }

分享到:
標簽:文件 下載 PHP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定