本站以前分享過一個檔案下載的函數,具體文章串連地址如下:
PHP檔案下載函數(代碼)
最近一客戶反映他們網站上所有的圖片下載不了了,下載下來的圖片都提示檔案被破壞,直接導致打不開,作者測試了下發現確實有這個問題,仔細看了下原始碼,發現問題的根源在fread這個函數,fread函數的第二個參數是設定讀取最大的位元組數,經實驗發現fread函數單次最大能夠讀取的位元組數是有限制的,僅為8192個位元組,即8KB,對於超過這個大小的檔案,如果要完整讀取,則需要迴圈讀取直至檔案結尾。綜合以上做了些改正,以下代碼是休整之後的代碼,經測試問題解決。
function download($file_url,$new_name=''){if(!isset($file_url)||trim($file_url)==''){return '500';}if(!file_exists($file_url)){//檢查檔案是否存在return '404';}$file_name=basename($file_url);$file_type=explode('.',$file_url);$file_type=$file_type[count($file_type)-1];$file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;//輸入檔案標籤phpernoteheader("Content-type: application/octet-stream");header("Accept-Ranges: bytes");header("Accept-Length: ".filesize($file_url));header("Content-Disposition: attachment; filename=".$file_name);//輸出檔案內容@readfile($file_type);}
您可能感興趣的文章
- 利用SecureCRT上傳、下載檔案(使用sz與rz命令)
- hosts檔案位置以及如何開啟hosts檔案
- PHP分析檔案頭資訊判斷上傳檔案的類型
- php清空(刪除)指定目錄下的檔案,不刪除目錄檔案夾的方法
- PHP 利用 Curl Functions 實現多線程抓取網頁和下載檔案
- PHP檔案下載函數(代碼)
- php限制檔案下載速度的功能
- 滑鼠移動到文字上出現浮層提示特效(相容IE,Firefox等所有瀏覽器)
http://www.bkjia.com/PHPjc/764096.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764096.htmlTechArticle本站以前分享過一個檔案下載的函數,具體文章串連地址如下: PHP檔案下載函數(代碼) 最近一客戶反映他們網站上所有的圖片下載不了了,...