小編給大家分享一下PHP怎樣實現文件下載,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
目前創新互聯建站已為1000多家的企業提供了網站建設、域名、雅安服務器托管、成都網站托管、企業網站設計、青山湖網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。1、php下載原理圖
2、文件下載源碼:
<?php $file_name="哈哈.jpg";//需要下載的文件 $file_name=iconv("utf-8","gb2312","$file_name"); $fp=fopen($file_name,"r+");//下載文件必須先要將文件打開,寫入內存 if(!file_exists($file_name)){//判斷文件是否存在 echo "文件不存在"; exit(); } $file_size=filesize("a.jpg");//判斷文件大小 //返回的文件 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); ?>
3、文件編碼問題解決方法:
如果文件名是中文,php的函數不能識別中文文件名,一般如果程序編碼為utf-8,php的函數比較古老,只能識別gb2312編碼的中文,所以把中文用iconv(“原編碼”,”要轉成的編碼”,”要轉碼的字符串”)函數可以轉碼。
比如,把一個字符串從utf-8轉碼為gb2312
$file_name=iconv(“utf-8”,”gb2312”,”$file_name”);
4使用header方式實現文件下載源碼
附上整理的下載方法,已封裝好,可直接使用:
function download_by_path($path_name, $save_name){ ob_end_clean(); $hfile = fopen($path_name, "rb") or die("Can not find file: $path_name\n"); Header("Content-type: application/octet-stream"); Header("Content-Transfer-Encoding: binary"); Header("Accept-Ranges: bytes"); Header("Content-Length: ".filesize($path_name)); Header("Content-Disposition: attachment; filename=\"$save_name\""); while (!feof($hfile)) { echo fread($hfile, 32768); } fclose($hfile); }
以上是“PHP怎樣實現文件下載”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
網頁標題:PHP怎樣實現文件下載-創新互聯
鏈接地址:http://vcdvsql.cn/article46/cscoeg.html
成都網站建設公司_創新互聯,為您提供網站改版、網頁設計公司、手機網站建設、小程序開發、企業建站、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯