首頁 >php教程 >php手册 >下載文件總結

下載文件總結

WBOY
WBOY原創
2016-08-25 10:19:461361瀏覽

產生 HTTP 頭強制下載資料到客戶端,這在實現檔案下載時很有用。
首先感謝@yangweijie的作品,在此基礎上衍生出不需要開啟php_fileinfo.dll擴充的方法。
方法一:開啟擴充功能下//$file 檔案路徑<br> public function download_file($file){<br>         if(is_file($file)){<br>             $length = filesize($file);<br>             $type = mime_content_type($file);<br>             $showname =  ltrim(strrchr($file,'/'),'/');<br>             header("Content-Description: File Transfer");<br>             header('Content-type: ' . $type);<br>             header('Content-Length:' . $length);<br>             if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) { //for IE<br>                 header('Content-Disposition: attachment; filename="' . rawurlencode($showname) . '"');<br>             } else {<br>                 header('Content-Disposition: attachment; filename="' . $showname . 》"');<br>             }<br>             readfile($file);<br>         } else {<br>             $this->error('原始檔案不存在!');<br>         }<br>     }方法二,如果沒有開啟php_fileinfo.dll,誰讓咱是沒有伺服器權限的程式設計師呢,又不能讓人家看不起,唉!可能你會懂。 public function force_download($filename)<br>     {<br>         if ($filename == ''){<br>             return FALSE;<br>         }<br>         if (FALSE === strpos($filename, '.')){<br>             return FALSE;<br>         }<br>         $x = explode('.', $filename);<br>         $extension = end($x);<br>         $mimes =$this->getMimes();<br> <br>         // Set a default mime if we can't find it<br>         if ( ! isset($mimes[$extension])){<br>             $mime = 'application/octet-stream';<br>         }else{<br>             $mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];<br>         }<br>         // Generate the server headers<br>         if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)<br>         {<br>             header('Content-Type: "'.$mime.'"');<br>             header('Content-Disposition: attachment; filename="'.$filename.'"');<br>             header('Expires: 0');<br>            header('Cache-Control: 必須重新驗證, post-check=0, pre-check=0');<br>             header(「內容傳遞編碼:二進位」);<br>             header('Pragma: public');<br>             header("長度:".filesize($filename));<br>         }<br>         其他<br>         {<br>             header('Content-Type: "'.$mime.'"');<br>             header('Content-Disposition: 附件; filename="'.$filename.'"');<br>             header(「內容傳遞編碼:二進位」);<br>             header('過期時間:0');<br>             header('Pragma: 無快取');<br>             header("長度:".filesize($filename));<br>         }<br>         readfile($檔案名稱);<br>     }<br> 私有函數 getMimes(){<br>         return $mimes = array(    'hqx'    =>    'application/mac-binhex40',<br>             'cpt'    =>    '應用程式/mac-compactpro',<br> 'csv'    =>    array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/ x-csv', 'text/x-csv'、'text/csv'、'application/csv'、'application/excel'、'application/vnd.msexcel'),<br>             'bin'    =>    「應用程式/macbinary」,<br>             'dms'    =>    '應用程式/八位元組流',且<br>             'lha'    =>    '應用程式/八位元組流',且<br>             'lzh'    =>    '應用程式/八位元組流',且<br>             'exe'    =>;    array('application/octet-stream', 'application/x-msdownload'),<br>             '類'    =>    '應用程式/八位元組流',且<br>             'psd'    =>    「應用程式/x-photoshop」,<br>             '所以'    =>    '應用程式/八位元組流',且<br>             '海'    =>    '應用程式/八位元組流',且<br>             'dll'    =>;    '應用程式/八位元組流',且<br>             'oda'    =>    “申請者/ODA”,且<br>            'pdf'    =>    array('application/pdf', 'application/x-download'),<br>             'ai'    =>    「申請/後記」,且<br>             'eps'    =>    「申請/後記」,且<br>             'ps'    =>    「申請/後記」,且<br>             'smi'    =>    “應用程式/微笑》,且<br>             '微笑'    =>    「應用程式/微笑」,且<br>             'mif'    =>    '應用程式/vnd.mif',<br>             'xls'    =>    array('application/,', 'application/vnd.ms-excel', 'application/msexcel),<br>             'ppt'    =>    array('application/powerpoint', 'application/vnd.ms-powerpoint'),<br>             'wbxml'    =>    '應用程式/wbxml',<br>             'wmlc'    =>    '應用程式/wmlc',<br>             'dcr'    =>    '應用程式/x-director',<br>             '目錄'    =>    '應用程式/x-director',<br>             'dxr'    =>    '應用程式/x-director',<br>             'dvi'    =>    '應用程式/x-dvi',<br>             'gtar'    =>    '應用程式/x-gtar',<br>             'gz'    =>    '應用程式/x-gzip',<br>             'php'    =>    'application/x-httpd-php',<br>             'php4'    =>    'application/x-httpd-php',<br>             'php3'    =>    'application/x-httpd-php',<br>             'phtml'    =>    'application/x-httpd-php',<br>             'phps'    =>    'application/x-httpd-php-source',<br>             'js'    =>    '應用程式/x-javascript',<br>             'swf'    =>    '應用程式/x-shockwave-flash',<br>             '坐'    =>    「應用程式/x-stuffit」,<br>             '焦油'    =>    “應用程式/x-tar”,且<br>            'tgz'    =>    array('application/x-tar', 'application/x-gzip-compressed'),<br>             'xhtml'    =>    'application/xhtml+xml',<br>             'xht'    =>    'application/xhtml+xml',<br>             'zip'    =>;  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),<br>             '中'    =>    』且音訊/MIDI',<br>             'midi'    =>    '音訊/MIDI',<br>             'mpga'    =>    '以音訊/mpeg',<br>             'mp2'    =>    '以音訊/mpeg',<br>             'mp3'    =>    array('音訊/mpeg', '音訊/mpg', '音訊/mpeg3', '音訊/mp3'),<br>             'aif'    =>    '有聲/x-aiff',<br>             'aiff'    =>    '音訊/x-aiff',<br>             'aifc'    =>;    '音訊/x-aiff',<br>             '公羊'    =>    』且音訊/x-pn-realaudio',<br>             'rm'    =>    』且音訊/x-pn-realaudio',<br>             'rpm'    =>    '有/x-pn-realaudio-插件』,<br>             'ra'    =>    '有聲/x-realaudio',<br>             'rv'    =>    』影片/vnd.rn-realvideo',<br>             'wav'    =>    array('音訊/x-wav', '音訊/wave', '音訊/wav'),<br>             'bmp'    =>    array('image/bmp', 'image/x-windows-bmp'),<br>             'gif'    =>    “影像/gif”,<br>             'jpeg'    =>;    數組('影像/jpeg','圖片/pjpeg'),<br>             'jpg'    =>    與影像/jpeg',「影像/pjpeg』),<br>             'jpe'    =>    數組('影像/jpeg','圖片/pjpeg》),<br>             'png'    =>    數組('image/png',  'image/x-png'),<br>             'tiff'    =>    「影像/tiff」,且<br>            'tif'    =>    「影像/tiff」,且<br>             'css'    =>    '文字/CSS',且<br>             'html'    =>    '文字/html',<br>             'htm'    =>    '文字/html',<br>             'shtml'    =>    '文字/html',<br>             'txt'    =>    』且文字/純文字',<br>             '文字」    =>    '文字/純文字』,<br>             '日誌'    =>    array('text/plain', 'text/x-log'),<br>             'rtx'    =>    '文字/資訊中』,<br>             'rtf'    =>    '文字/rtf',<br>             'xml'    =>    』且文字/xml',<br>             'xsl'    =>    '文字/xml',<br>             'mpeg'    =>    '視訊/mpeg',<br>             'mpg'    =>    '視訊/mpeg',<br>             'mpe'    =>    '視訊/mpeg',<br>             'qt'    =>    「視訊/Quicktime」,且<br>             'mov'    =>    「視訊/Quicktime」,且<br>             'avi'    =>    』視訊/x-msvideo',<br>             '電影'    =>    』視訊/x-sgi-電影',<br>             '文檔』    =>    '應用程式/msword',<br>             'docx'    =>    array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'applium             'xlsx'    =>    array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'appli             '單字'    =>    array('application/msword', 'application/octet-stream'),<br>             'xl'    =>    “應用程式/Excel”,<br>             'eml'    =>    』訊息/rfc822',<br>             'json' =>; array('application/json', 'text/json')<br>        );看到這裡估計大家都懂了,就是由後綴去配對文件類型。實作mime_content_type的功能。
【廣告】
本人承接商城,辦公,企業站,經銷等系統開發及二次開發。歡迎諮詢。
771831851

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn