PHP 关于文件下载的问题

Begodya 2010-05-02 01:23:40
文件下载页面download.html

....
<td>
<?php echo"<a href=download.php?upfile_ID=".$upfile_ID.">下载</a>";?>
</td>
....



文件下载控制页面download.php

<?php
include("connect.php");

$upfile_ID = $_GET['upfile_ID'];
$sql = "select upfile_name,upfile_path from $Upfile where upfile_ID='$upfile_ID'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);

$upfile_name = $row['upfile_name']; //文件名
$upfile_path = $row['upfile_path']; //文件存放路径

  if (!file_exists($upfile_path.$upfile_name))
{ //检查文件是否存在
echo "<script>alert ('文件不存在!');history.back();</script>";

exit;
} else {

  $fp = fopen($upfile_path.$upfile_name,"r"); //打开文件

  //输入头信息

  Header("Content-type: application/octet-stream");

  Header("Accept-Ranges: bytes");

  Header("Accept-Length: ".filesize($upfile_path.$upfile_name));

  Header("Content-Disposition: attachment; filename=" .$upfile_name);

  //输出文件内容

  echo fread($fp,filesize($upfile_path.$upfile_name));

  fclose($fp);

  exit;
}
?>



不知何故,点击下载后,出现的却是下载 download.php 的下载框,而不是所要的文件下载框。请指教?
...全文
146 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Begodya 2010-05-02
  • 打赏
  • 举报
回复
文件中我把Header("Content-Disposition: attachment; filename=" .$upfile_name);
顺手写成了upfilename..导致出现上述问题。
再次感谢各位的亲临指导!
Begodya 2010-05-02
  • 打赏
  • 举报
回复
已解决,多谢以上各位的指点!
luojxun 2010-05-02
  • 打赏
  • 举报
回复
我使用楼主的代码没问题。
难道楼主的服务器解析html文件?

如果不行,可能是配置问题。把楼主的phpinfo贴出来看看。
Begodya 2010-05-02
  • 打赏
  • 举报
回复
从DB中取出的文件名及路径是对的.
PIGer920 2010-05-02
  • 打赏
  • 举报
回复
先甭下载了
把从db里取出来的$upfile_path.$upfile_name打印出来看看
Begodya 2010-05-02
  • 打赏
  • 举报
回复
嗯,放到服务器上了。
PIGer920 2010-05-02
  • 打赏
  • 举报
回复
你的download.php放在服务器上了吗
Begodya 2010-05-02
  • 打赏
  • 举报
回复
咦~单独测试竟然也是下载download.php。
我在WINDOWS下再试试~
餅餅 2010-05-02
  • 打赏
  • 举报
回复

$upfile_name = "1.txt"; //文件名
$upfile_path = ""; //文件存放路径
$fp = fopen($upfile_path.$upfile_name, "r"); //打开文件
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($upfile_path.$upfile_name));
Header("Content-Disposition: attachment; filename=" .$upfile_name);
echo fread($fp,filesize($upfile_path.$upfile_name));
fclose($fp);
exit;

你试试把文件名和路径写出来 单独运行测试下
Begodya 2010-05-02
  • 打赏
  • 举报
回复
不好意思,还是不行!
通过ID,找出了数据库中要下载文件的名称及路径,可就到点击下载的时候变成了 download.php 的下载框,想不通怎么会这样..
Begodya 2010-05-02
  • 打赏
  • 举报
回复
多谢回复!
我其他的搜索,修改,上传等页面完全正常的..
就是下载的时候出现这个问题,想半天也没头绪..
餅餅 2010-05-02
  • 打赏
  • 举报
回复
把else中的语句干掉 贴上下面的 我刚才拷贝了你的代码 总是有问题
特别是这两句
$fp = fopen($upfile_path.$upfile_name,"r"); //打开文件
Header("Content-type: application/octet-stream");


$fp = fopen($upfile_path.$upfile_name, "r"); //打开文件
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($upfile_path.$upfile_name));
Header("Content-Disposition: attachment; filename=" .$upfile_name);
echo fread($fp,filesize($upfile_path.$upfile_name));
fclose($fp);
exit;
ghostxyz0 2010-05-02
  • 打赏
  • 举报
回复
是不是沒有開啟server application
server application 是不是不能解析PHP檔案
是不是訪問html時沒有通過server application
比如說 D:\www\download.html

寫個phpinfo.php
<?php phpinfo(); ?> 跑一下
Begodya 2010-05-02
  • 打赏
  • 举报
回复
下载下来的就是 download.php 这个下载控制脚本,想不通为什么...
先根据ID,再到数据库中找对应文件的名字及存储路径,然后下载,就是上面的代码。
ghostxyz0 2010-05-02
  • 打赏
  • 举报
回复
那下載下來後的文件內容是什麼...
你下載頁訪問的URI 的什麼...
Begodya 2010-05-02
  • 打赏
  • 举报
回复
多谢回复!我的错..刚贴的时候没注意到!
应该是 $fp = fopen($upfile_path.$upfile_name,"r"); //打开文件
可不是这个地方的问题啊!
餅餅 2010-05-02
  • 打赏
  • 举报
回复
fp = fopen($upfile_path.$upfile_name,"r");

21,886

社区成员

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

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