當前位置:編程學習大全網 - 源碼下載 - PHP文件文件損壞的問題

PHP文件文件損壞的問題

簡單測試了壹下,下載大文件(> 50M),對中文名字的文件支持不好,甚至回到404。下載的文件打不開,可能是因為沒有判斷是否已經讀完,因為fread可能無法壹次性將壹個文件讀入內存,所以服務器有壓力,服務器為了穩定可能會優化內存區域。我修改的代碼貼在下面,不好改。

功能?下載($file_url,$new_name=''){

$file_url=iconv('utf-8 ',' gb2312 ',$ file _ URL);?

//將編碼轉換為支持中英文的gb2312編碼。

如果(!isset($ file _ URL)| | trim($ file _ URL)= ' '){

回歸?'500';

}

如果(!file_exists($file_url)){?//檢查文件是否存在。

回歸?'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

//輸入文件標簽。

header("內容類型:?應用程序/八位字節流”);

header("Accept-Ranges:字節”);

header("Accept-Length:"。filesize($ file _ URL));

header("內容-處置:?附件;?文件名= "。$文件名稱);

$file_type=fopen($file_url,' r ');?//打開文件

//輸出文件內容

$ file _ size = filesize($ file _ URL);//獲取文件大小

?$ buffer = 1024;?//定義1KB的緩存空間。

$ file _ count = 0;//計數器計算已經發送了多少數據。

而(!feof($file_type)?& amp& amp?($ file _ size & gt$file_count)){?

//如果文件沒有讀完,還有數據沒有發送呢?

$senddata=fread($file_type,$ buffer);

//將文件內容讀取到緩存中。

$ file _ count+= $ send data;

回聲?$ senddata

}

//echo?fread($file_type,filesize($ file _ URL));

fclose($ file _ type);

}//主要原因找到了。保存PHP源代碼的時候,要保存成UTF-8 ROM-free格式,否則每個文件的頭裏都會有。英孚?BB?這兩個字。

  • 上一篇:超走心婚禮請柬文案
  • 下一篇:網站如何申請微信支付網站如何申請微信支付接口
  • copyright 2024編程學習大全網