免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1439 | 回复: 6
打印 上一主题 下一主题

[关于下载]函数处理php下载问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-01 08:56 |只看该作者 |倒序浏览
大家好,请教大家一个问题。
我有一个函数:

  1. function do_download(){
  2.     header('Content-Disposition: attachment; filename="test.pdf"');
  3.     header('Content-Type: application/octet-stream; name="test.pdf"');
  4.     readfile("/var/tmp/test.pdf");
  5. }
复制代码


我在验证用户成功后会调用这个函数,现在页面在Mozilla下可以下载成功,可是在IE下却不能使用?
请教大家我要如何修改才可以正常在IE下使用呢?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-06-01 09:35 |只看该作者

  1. session_start();
  2. if (!(isset($_SESSION['ACCOUNT']))){
  3.     header ("Location: login.php");
  4.     exit;
  5. }
  6. $file = fopen("/var/tmp/abook.csv","r");
  7. Header("Content-type: application/octet-stream");
  8. Header("Accept-Ranges: bytes");
  9. Header("Accept-Length: ".filesize("/var/tmp/abook.csv"));
  10. Header("Content-Disposition: attachment; filename=abook.csv");
  11. echo fread($file,filesize("/var/tmp/abook.csv"));
  12. fclose($file);
  13. exit;
复制代码

我将上面的文件存成download.php然后在IE中直接输入download.php也不可以。
如果我将页面写成这样:

  1. /*
  2. session_start();
  3. if (!(isset($_SESSION['ACCOUNT']))){
  4.     header ("Location: login.php");
  5.     exit;
  6. }
  7. */
  8. $file = fopen("/var/tmp/abook.csv","r");
  9. Header("Content-type: application/octet-stream");
  10. Header("Accept-Ranges: bytes");
  11. Header("Accept-Length: ".filesize("/var/tmp/abook.csv"));
  12. Header("Content-Disposition: attachment; filename=abook.csv");
  13. echo fread($file,filesize("/var/tmp/abook.csv"));
  14. fclose($file);
  15. exit;
复制代码

就可以了,是不是我的session配置有问题呢?关键是在Mozilla下可以使用在IE下就不能使用了。
谢谢!

[ 本帖最后由 hongfengyue 于 2006-6-1 10:07 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-06-01 10:34 |只看该作者
系统环境:Linux php5。
现在使用php4也没有问题,可是我的系统是php5的。

论坛徽章:
0
4 [报告]
发表于 2006-06-01 11:14 |只看该作者
在有session_start的情况下,IE下载点保存不要直接点打开,这样就可以了
-------
这是ie的bug.当启用session后,ie就认为是禁用了cache---所以直接打不开,因为临时目录中没有文件.

论坛徽章:
0
5 [报告]
发表于 2006-06-03 08:32 |只看该作者
一会儿测试一下看看。谢谢回复。

论坛徽章:
0
6 [报告]
发表于 2006-06-04 12:03 |只看该作者
原帖由 hongfengyue 于 2006-6-1 08:56 发表
大家好,请教大家一个问题。
我有一个函数:
[code]
function do_download(){
    header('Content-Disposition: attachment; filename="test.pdf"');
    header('Content-Type: application/octe ...


这样的代码在我这儿工作正常,只是多一个回车符号,怎样去掉?

论坛徽章:
0
7 [报告]
发表于 2006-06-04 15:41 |只看该作者
原帖由 dolmans 于 2006-6-4 12:03 发表


这样的代码在我这儿工作正常,只是多一个回车符号,怎样去掉?


已解决。

$filesize = filesize($filepath);
header("Content-Length: $filesize");
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP