php文件下载,下载的文件不能打开

iliuyi 2010-07-14 05:22:46
代码如下:
<?php $file_name = "test.gif";
$file_dir = "a/";
if (!file_exists($file_dir . $file_name))
{
//检查文件是否存在
echo "文件找不到";
} else
{
$file = fopen($file_dir . $file_name, "r"); //打开文件
//输入文件标签
header("Pragma: public ");
header("Expires: 0 ");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0 ");
header("Content-Type: image/gif ");
header("Content-Disposition: attachment; filename=$dest; ");
header("Content-Transfer-Encoding: binary ");
header("Content-Length: " . filesize($file_dir.$file_name));
readfile($file,filesize($file_dir.$file_name));
fclose($file);
exit;
} ?>
万分火急啊,求大人,万分感谢 - -
...全文
87 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
amani11 2010-07-14
  • 打赏
  • 举报
回复
原因就是你之前有输出么,你不都看到了一堆html标签,不是正常的图片格式
iliuyi 2010-07-14
  • 打赏
  • 举报
回复
可以了,真谢谢你了,原因是啥呢?
amani11 2010-07-14
  • 打赏
  • 举报
回复
@ob_end_clean();
header("Pragma: public ");//这一行之前,加上上面那行,再试试吧
iliuyi 2010-07-14
  • 打赏
  • 举报
回复
你这么一说,我看了一下,服务器上的能够打开,但是下载下来后,文件变大了,里面增加了这些内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style/global.css" rel="stylesheet" type="text/css" />
</head>

<body>

该怎么搞啊,头大。
amani11 2010-07-14
  • 打赏
  • 举报
回复
你确认服务器上a/test.gif,的尺寸和下载下来的文件的尺寸一致

并且服务器上的test.gif,能打开?
iliuyi 2010-07-14
  • 打赏
  • 举报
回复
我测试还是不行,真想哭了
是不是服务器配置哪方面有问题?
amani11 2010-07-14
  • 打赏
  • 举报
回复

//个人测试可以,加参数再测看看??
$file_name = "b2b0127_10.gif";
$file_dir = "skin/images/";
if (!file_exists($file_dir . $file_name))
{
//检查文件是否存在
echo "文件找不到";
} else
{
//$file = fopen($file_dir . $file_name, "r"); //打开文件
//输入文件标签
header("Pragma: public ");
header("Expires: 0 ");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0 ");
header("Content-Type: image/gif ");
header("Content-Disposition: attachment; filename=1231231231231.gif");//文件名我乱敲了
header("Content-Transfer-Encoding: binary ");
header("Content-Length: " . filesize($file_dir.$file_name));
readfile($file_dir.$file_name,filesize($file_dir.$file_name));
//fclose($file);
exit;
}


iliuyi 2010-07-14
  • 打赏
  • 举报
回复
to amani11,谢谢
这段代码是别地反拷过来的,$dest改成$file_name了,
readfile($file_dir.$file_name,filesize($file_dir.$file_name));
这个改也不对吧
试了试还是不行
amani11 2010-07-14
  • 打赏
  • 举报
回复
$dest 前面没有定义吧,可能会出错

把readfile($file,filesize($file_dir.$file_name));改成
readfile($file_dir.$file_name,filesize($file_dir.$file_name));


再试试

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧