PHP使用HTTP headers强制文件下载,在IE6 IE7 IE8中出现以下错误导致无法正常下载文件
Internet Explorer 无法下载 xxx (来自xxx)。
Internet Explorer 无法打开该 Internet 站点。请求的站点不可用,或找不到,请以后再试。
对应的英文版错误信息: Internet Explorer cannot download FileName from WebServer.
这样的错误,源头是下载程序,代码有问题,但这不是程序员的问题,而是IE6 IE7 IE8在文件下载时有一个Bug.
那就是不能包含有Cache-Control: no-cache的HTTP头信息,一旦出现了这个头信息,在IE 6-8 中就无法通过PHP强制下载文件。
可以用Cache-Control: max-age=-1来代替,在其他语言中也是一样的道理。
完整的PHP HTTP headers强制下载文件代码如下:- <?php
- /* PHP HTTP headers强制文件下载
- * @Author 吴先成 www.51-n.com
- */
- $file='./Mom-01-01.mkv';
- $fp=fopen($file,'r');
- header('Pragma: no-cache');
- header('Cache-Control: max-age=-1');
- header('Expires: -1');
- header('Connection: close');
- header('Content-Type: application/octet-stream');
- header('Content-Length: '.filesize($file));
- header('Content-Disposition: attchment; filename="Mom-01-01.mkv"');
- while(!feof($fp)){
- echo fread($fp,1024);
- }
- ?>
复制代码 |
|