php用header()實現檔案下載,下載的檔案提示被破壞不能開啟的解決辦法_PHP教程

來源:互聯網
上載者:User
本站以前分享過一個檔案下載的函數,具體文章串連地址如下:

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檔案下載函數(代碼) 最近一客戶反映他們網站上所有的圖片下載不了了,...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.