PHP實現檔案下載

來源:互聯網
上載者:User

標籤:html   處理   evo   exp   des   ring   microsoft   匯入   實現   

PHP實現檔案下載PHP下載檔案js下載檔案

項目操作中不可避免要提供檔案的下載,有時候要寫一些邏輯判斷或者提示啥,那下載的方法就需要做些調整。做個下載檔案的集錦:

  1. readfile — 輸出檔案 (手冊上有說明:讀入一個檔案並寫入到輸出緩衝。)

<?php$file  =  ‘monkey.gif‘ ;if ( file_exists ( $file )) {     header ( ‘Content-Description: File Transfer‘ );     header ( ‘Content-Type: application/octet-stream‘ );     header ( ‘Content-Disposition: attachment; filename=‘ . basename ( $file ));     header ( ‘Content-Transfer-Encoding: binary‘ );     header ( ‘Expires: 0‘ );     header ( ‘Cache-Control: must-revalidate‘ );     header ( ‘Pragma: public‘ );     header ( ‘Content-Length: ‘  .  filesize ( $file ));     ob_clean ();     flush ();     readfile ( $file );    exit;} ?> 

2.使用js實現檔案下載,原理也是通過HTML5 a標籤設定download屬性就能實現。

<a href="./upload/user_excel/20161229.txt" download="20161229.txt"> 下 載 文 件 </a>  

封裝的方法也就是使用實現上述a標籤的click事件。

#js通過HTML5 download屬性實現下載檔案    function DownloadFileJs( $dir,$filename ){        $url = $dir."/".$filename;              $uploadjs = "<script type=\"text/javascript\" >                    var a = document.createElement(‘a‘);                    var url = \"".$url."\";                    var filename = ‘".$filename."‘;                    a.href = url;                    a.download = filename;                    a.click();window.URL.revokeObjectURL(url);                    console.log(a);            </script>";        echo ($uploadjs);           exit;            }?>

調用測試如下:

    $dir = ‘./upload/user_excel‘;    $filename = ‘20161229.txt‘;    DownloadFileJs( $dir, $filename );

個人覺得此種方法比較靈活,當然也是相對而言,比如在進行excel匯入,後台在處理資料時需要反饋,彈出提示成功與否,再提供異常記錄(或操作記錄)的下載檔案,使用js就比較易處理這個邏輯,而若使用第一種輸出緩衝的方法,PHP語句會優先處理解析,會跳過提示,使用者體驗就不太好 。此種方法也有缺陷,它需要HTML5的支援,只要不是太過舊的瀏覽器都是支援的。當然也有其他的js方法下載,以後有機會會補充下去。

– 天行健,君子以自強不息!

PHP實現檔案下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.