php文件下載

  咱們經常經過網頁下載各類各樣的文件,究竟是怎樣實現地呢?本文從php的角度,結合http相關內容對文件下載作出相關討論。php

  通常來講,經過超連接的方式能夠直接下載文件。html

<a href='要下載的文件'>點擊下載</a>

  這一招能夠應對不少格式的文件如.exe,.rar等格式,可是應對圖片格式,html,txt等類型的文件,點擊連接只會直接顯示在瀏覽器上。那麼如何應對這種狀況呢?這時候就須要php出場了。編程

  在我有限的php編程經歷中,遇到過兩種php下載文件的形式。總體上都是利用經過設置響應的header 來實現文件下載。原理上沒有本質的不一樣。瀏覽器

  第一種:緩存

$file_name='文件名'; header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name )); header ( 'Content-Length: '.filesize ( $file_name )); readfile ( $file_name );

  其中$filename設置的是下載文件的名稱。  經過readfile()讀入一個文件而且寫入到輸出緩存。app

  第二種:spa

$file_name='要下載的文件名';


$fp=fopen($file_name,"r+");
$file_size=filesize($file_name);
//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);

  這種方式更加詳細描述了下載文件的過程。code

  1. 打開文件,寫入內存。
  2. 計算文件大小
  3. 設置頭信息
  4. 輸出數據到緩存
  5. 關閉文件
相關文章
相關標籤/搜索