Featured Posts

CentOS LAMP Setup 很土鳖的问题,浪费我几个小时,终于搞定! 在 CentOS 下使用 xampp 的集成套件搭建 LAMP 环境,启动 Apache 后,用浏览器访问 web 程序,居然提示下载源文件!! 也就是...

Readmore

看看我写的 GFW 小故事 我是一个乖孩子,喜欢上网跟朋友们聊天、玩游戏 警察叔叔说,网上很黄很暴力,我却很傻很天真,不让我再看到我最爱的网站 直到有一天,一个无辜的小鸟被无情地封杀,我才意识到问题的严重性 面对河蟹坚硬的钳子,小鸟不能改变什么,唯一能做的,就是送上几句脱口秀解解气 据说那个墙,又黑又高,看到朋友们发来的结构图,我哭了 我再也看不见可爱的...

Readmore

Apache ReWrite QUERY_STRING 问号 ? 看一条应用中简单的 rewrite 规则: 将请求: http://www.leakon.com/soft/install?ver=2.0 rewrite 为: http://www. leakon.com/my/soft/install.php 配置文件 httpd.conf...

Readmore

  • Prev
  • Next

PHP 文件下载 IE 无法打开页面

Posted on : 24-07-2008 | By : leakon | In : PHP, 原创

2

IE 又有一个弱得不行的问题让我发现!

有个项目,要限制文件的下载权限,只有注册用户才可以下载,用户登录后,点击下载链接,弹出保存附件的提示。

我用 PHP 写了一个下载类,支持断点续传的。

今天发现一个问题,在 IE 7 下,点击链接,可以弹出对话框,提示 "打开"、"保存" 和 "取消",点击打开没问题,点击保存,却马上弹出错误提示 "该页面无法打开"!

这时可以注意到一个细节,弹出保存对话框的时候,正常情况下窗口左边会根据文件类型显示图标,而此时却是一个没有类型的默认图标。

我怀疑是 PHP 在设置 Http Header 的时候有问题,仔细检查了每一项,逐项注释,问题依旧。

可是同样的链接,在 Firefox、Opera 和 Safari 下都没问题,打开或保存都正常。

后来去网上搜了好多文件下载的 header 设置,发现我少了 2 个属性:

Expires 和 Cache-Control,我想起来我以前写过一个 Case,说要加 Cache-Control,否则用IE 打开文件会提示 "文档已损坏":

http://www.leakon.com/archives/76

这提醒了我,我应该加上 Cache-Control 的。

果然,加上下面这 2 行,问题就完全解决:
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

全部代码请见我的 GoogleCode:

http://leakon.googlecode.com/svn/trunk/leakon/php/iplimit/smart_download.php

这是支持短点续传的哦,很好用。

使用很简单,用文件绝对路径 new 一个对象,然后调用 $obj->download() 就可以啦。

当然,还可以通过参数,配置文件名和文件类型。

大伙儿看看吧,这是我给互联网的贡献~~

Comments (2)

好东西!支持一个!

非常感谢!帮我解决了难题。

Write a comment