<?php
//设置文件最长执行时间
set_time_limit(0);
ini_set('memory_limit', '512M');
if(isset($_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'POST')){
$tmp_arr = $_POST;
}
if($_SERVER['REQUEST_METHOD'] == 'GET'){
$tmp_arr = $_GET;
}
if(isset($tmp_arr['file_path']) && trim($tmp_arr['file_path'])!='') {
$file = $tmp_arr['file_path'];
if (file_exists($file) && is_file($file)) {
$filesize = filesize($file);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $filesize);
header('Content-Disposition: attachment; filename=' . basename($file));
// 打开文件
$fp = fopen($file, 'rb');
// 设置指针位置
fseek($fp, 0);
// 开启缓冲区
ob_start();
// 分段读取文件
while (!feof($fp)) {
$chunk_size = 1024 * 1024 * 2; // 2MB
echo fread($fp, $chunk_size);
ob_flush(); // 刷新PHP缓冲区到Web服务器
flush(); // 刷新Web服务器缓冲区到浏览器
sleep(1); // 每1秒 下载 2 MB
}
// 关闭缓冲区
ob_end_clean();
fclose($fp);
} else {
echo 'file not exists or has been removed!';
}
exit();
}else{
die(json_encode(array('return_code'=>10008, 'return_message'=>'PARAM_ERROR', 'error'=>'参数错误')));
}
php header下载
最新推荐文章于 2022-12-11 21:29:47 发布