2015-02-10 24 views
1

我有以下的PHP脚本,下载输出文件,以最终用户:如何在PHP脚本文件下载期间在Web浏览器中启用下载进度条?

session_write_close(); 
ob_end_clean(); 
set_time_limit(0); 

if($file = fopen($path, 'rb')) 
{ 
    header("Cache-Control: no-cache"); 
    header("Pragma: no-cache"); 
    header("Accept-Ranges: bytes"); 
    header("Content-length: ".(string)(filesize($path))); 
    header("Content-Disposition: attachment; filename=\"".basename($path)."\""); 
    header("Content-type: application/octet-stream"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Connection: close"); 

    fpassthru($file); 
    fclose($file); 
} 

用户可以下载该文件就好了,但是当一个大的文件被下载的Web浏览器不用剩余下载文件的百分比显示进度条。它只显示当前下载的MB数量。

所以我很好奇,我应该在标题中更改什么以启用此下载过程?

PS。下面是截图:

enter image description here

回答

0

假设它是gzip和绑不知道实际的内容长度...也许添加此头?

header("accept-encoding: gzip;q=0,deflate;q=0"); 
+0

谢谢,但它并没有改变它。我也试过'Accept-encoding:gzip;放气;'。 – c00000fd 2015-02-10 23:42:15

+0

你认为它的gzip相关吗?看看请求,你能看到压缩是否被使用?可以尝试在Web服务器上关闭以进行测试。有问题的Web服务器是什么? – ficuscr 2015-02-10 23:48:23

+0

服务器是“Apache/Linux 3.12.35.1418868052”。我如何知道它是否使用gzip?还有什么是通过PHP转储标题的方式? – c00000fd 2015-02-11 00:00:46

相关问题