2013-05-12 72 views
0

我有一个非常简单的力量下载脚本:如何用php强制下载脚本计算时间?

$thefile = $_GET['id']; 
$file = 'http://www.mywebsite.com/test/'.$thefile; 
header('Content-Disposition: attachment; filename='.$thefile); 
header("Content-Type: application/force-download"); 
@readfile($file); 

而且它工作得很好,但它并没有显示多少时间剩余(“无法计算时间”)。

我发现有人有类似的问题here,通过使用此代码:

# for URL paths that begin with "/foo/bar/" 
SetEnvIf Request_URI ^/foo/bar/ no-gzip=1 

# for files that end with ".py" 
<FilesMatch \.py$> 
    SetEnv no-gzip 1 
</FilesMatch> 

但很可惜,我不能得到那个工作。我的文件是媒体文件(AVI,WMV,MP4等),所以我认为我将不得不修改沿着这些线路代码:

SetEnvIf Request_URI ^/test/ no-gzip=1 

<FilesMatch "\.(avi|wmv|mp4|mpg|mpeg|m4v)$"> 
    SetEnv no-gzip 1 
</FilesMatch> 

我也改变了路径,以一个简单的测试文件夹,但时间还没有被显示。

如何?

回答

0

您应该添加内容长度标题,让您的浏览器知道总文件大小。

header("Content-Length: " . filesize($file)); 

看看this example

+0

谢谢,但我已经尝试过(头文件(“Content-Length:”。filesize($ file));)但可用。 – 2013-05-12 10:35:55

+0

@EmilyAdler禁用GZIP并返回内容长度应该有所斩断。如果它不检查你的服务器返回给你的浏览器的头文件。对于Firefox,有一个名为Tamper Data的好插件。 – Tom 2013-05-12 11:25:24