php文件下载显示进度条,PHP下载文件并显示进度条

下载进度条演示

文件大小 未知长度
已经下载 0
完成进度 0%

//文件长度

var filesize=0;

function $(obj) {return document.getElementById(obj);}

//设置文件长度

function setFileSize(fsize) {

filesize=fsize;

$(“filesize”).innerHTML=fsize;

}

//设置已经下载的,并计算百分比

function setDownloaded(fsize) {

$(“downloaded”).innerHTML=fsize;

if(filesize>0) {

var percent=Math.round(fsize*100/filesize);

$(“progressbar”).style.width=(percent+”%”);

if(percent>0) {

$(“progressbar”).innerHTML=percent+”%”;

$(“progressText”).innerHTML=””;

} else {

$(“progressText”).innerHTML=percent+”%”;

}

}

}

ob_start();

@set_time_limit(300);//设置该页面最久执行时间为300秒

$url=”http://xmgl.scst.gov.cn/up_files/2016/Chrome.zip”;

$newfname=”chrome.zip”;//本地存放位置

$file = fopen ($url, “rb”);

if ($file) {

//获取文件大小

$filesize = -1;

$headers = get_headers($url, 1);

if ((!array_key_exists(“Content-Length”, $headers))) $filesize=0;

$filesize = $headers[“Content-Length”];

//不是所有的文件都会先返回大小的,有些动态页面不先返回总大小,这样就无法计算进度了

if ($filesize != -1) {

echo “”;//在前台显示文件大小

}

$newf = fopen ($newfname, “wb”);

$downlen=0;

if ($newf) {

while(!feof($file)) {

$data=fread($file, 1024 * 8 );//默认获取8K

$downlen+=strlen($data);//累计已经下载的字节数

fwrite($newf, $data, 1024 * 8 );

echo “”;//在前台显示已经下载文件大小

ob_flush();

flush();

}

}

if ($file) {

fclose($file);

}

if ($newf) {

fclose($newf);

}

}

?>

    原文作者:深夜丨幽游
    原文地址: https://blog.csdn.net/weixin_30561959/article/details/115575506
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞