ad_728x90

2013年6月13日 星期四

下載檔案但不直接開啟

多數人在下載檔案的頁面直接連結該檔案, 如下寫法 ----


a href="檔名.副檔名"


這在 windows 系統會有一個可能的狀況, 當此類型檔案與 windows 預設開啟功能產生關聯時(通常是以副檔名為判斷依據), 一點擊這個下載連結時, windows 就會自動啟動此類型檔案的程式並開啟此檔案, 例如:


下載的檔案為 demo.txt, 而 .txt 檔在 windows 預設的開啟程式為記事本, 所以一點擊此連結, windows 便會啟動記事本並開啟 demo.txt, 但實際上我們所希望的是真正的下載 demo.txt 並儲存在硬碟內.


要達到此目的, 我們需要另一個專門下載檔案的 PHP 小程式, 假設我們將這個小程式命名為 downloadfile.php, 其程式內容如下 ----




PHP 代碼:
<?php
$filename 
$_GET["name"]; //Obviously needs validation
  
ob_end_clean();
  
header("Content-Type: application/octet-stream; ");
  
header("Content-Transfer-Encoding: binary");
  
header("Content-Length: "filesize($filename).";");
  
header("Content-disposition: attachment; filename=" $filename);
  
readfile($filename);
  die();
  
?>


另外, 改寫原下載頁面的 html 語法 ----


a href="downloadfile.php?file=檔名.副檔名"

If such php file is located on the same server/website, then just open it as normal file, e.g.$fileContents = file_get_contents($filename);
If file is on another server, you have few possible options:
1) Access it via FTP (if you have login details and access)
2) Have special URL Rewrite rule on that server which will instruct web server to send file as plain text instead of executing it (e.g.somefile.php.txt)
3) Have special script on that server and by passing file name as a parameter it will return content of that file (e.g.http://example.com/showfile.php?file=somefile.php)

COMMENTS HAVE BEEN DISABLED FOR THIS POST [文章的評論已被禁用]

Ratings and Recommendations by outbrain