国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

基于php下載文件的詳解

2024-05-04 23:08:18
字體:
來源:轉載
供稿:網友
php下載文件,比如txt文件。
出現的效果就是,彈出瀏覽器自帶的下載框,出現另存為操作。有時候會出現內存溢出和超時的現象。
超時的話,設置set_time_limit(0);
出現內存溢出的話,有可能是因為從數據庫中取出的數據量太大導致的。
如果是從文件中讀取的話,出現內存溢出的話,就是代碼讀取方式不正確,調用files或者filegetcontens才會
如果是fopen的話,就給一個緩沖區,固定大小,讀入然后寫入,不會出現內存溢出的情況。
如代碼:

復制代碼 代碼如下:


if (file_exists($file_path)) { //如果文件存在
$handle = fopen($file_path, "r");
while (!feof($handle)) {
$content = fgets($handle, 4096); //讀取一行
echo $content; //輸出到緩沖區,即php://stdout。達到緩沖區設置值后由tcp傳給瀏覽器進行輸出 一般到512字節就會通過網絡輸出給瀏覽器
}
fclose($handle);
}


但是在輸出之前,要調用一次,@ob_end_flush();不能循環調用,只調用一次就好。
@ob_end_flush();//沖刷出(送出)輸出緩沖區內容并關閉緩沖

文件下載:
content-type://下載的格式,瀏覽器不能解析的格式就會彈出下載框

復制代碼 代碼如下:


header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
Header("Content-type: application/octet-stream");  //響應內容類型  
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($filename). ' bytes');
Header('Content-Disposition: attachment; filename='.$filename);  //HTTP響應頭


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤城市| 海安县| 雅安市| 柳江县| 大英县| 肇东市| 平乡县| 昭苏县| 崇阳县| 永登县| 亳州市| 双峰县| 会泽县| 邵东县| 白山市| 岫岩| 民乐县| 秦皇岛市| 承德县| 合阳县| 凉城县| 无棣县| 北辰区| 晋江市| 营山县| 古浪县| 台北市| 金秀| 玉门市| 河源市| 册亨县| 沙洋县| 宁陵县| 安溪县| 吉木乃县| 宣恩县| 资兴市| 棋牌| 禹州市| 武冈市| 卫辉市|