php文件下载

ccclDevil 2015-01-06 08:35:13
下面是我在网上的找的代码,自己改了下:

down_file.php:
<?php

if(!empty($_GET)){

header("Content-type: application/octet-stream ; charset=utf-8"); //输出类型
header("Content-Disposition:filename=".$name);
header("Accept-Ranges: bytes"); //文件单位
header("Accept-Length:".$filesize); //文件大小
header("Content-Disposition: attachment; filename=".$name);//下载时显示的名字
$name=$_GET['name'];
$url=$_GET['url'];

$f=fopen($url.$name, "r");
$buffer=1024;
$filesize=filesize($name);
$downsize=0;
$str="";
while(!feof($f) && ($filesize-$downsize)>0){
$downsize+=$buffer;
echo fread($f,$buffer);

}
//echo $str;
fclose($f);

}

?>


html页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>

<a href="down_file.php?name=a.jpg&url=./img/">下载a.jpg</a>

</body>
</html>


目的是下载a.jpg,
问题是点击后弹出窗口下载的是down_file.php而不是a.jpg。。如下图



求指点一下,能给个能用的代码更好了
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccclDevil 2015-01-06
  • 打赏
  • 举报
回复
引用 3 楼 fdipzone 的回复:
$name=$_GET['name']; $url=$_GET['url']; $filesize=filesize($url.$name); 这三句要放在上面,否则 header("Content-Disposition:filename=".$name); 会拿不到$name导致出notice. 改成这样

if(!empty($_GET)){
    $name=$_GET['name'];
    $url=$_GET['url'];
    $filesize=filesize($url.$name);

    header("Content-type: application/octet-stream ; charset=utf-8"); //输出类型 
    header("Content-Disposition:filename=".$name);
    header("Accept-Ranges: bytes"); //文件单位
    header("Accept-Length:".$filesize); //文件大小
    header("Content-Disposition: attachment; filename=".$name);//下载时显示的名字

 
    $f=fopen($url.$name, "r");
    $buffer=1024;
    $downsize=0;
    $str="";
    while(!feof($f) && ($filesize-$downsize)>0){
        $downsize+=$buffer;
        echo fread($f,$buffer);
 
    }
    //echo $str;
    fclose($f);
 
}
谢谢,改好了
傲雪星枫 2015-01-06
  • 打赏
  • 举报
回复
$name=$_GET['name']; $url=$_GET['url']; $filesize=filesize($url.$name); 这三句要放在上面,否则 header("Content-Disposition:filename=".$name); 会拿不到$name导致出notice. 改成这样

if(!empty($_GET)){
    $name=$_GET['name'];
    $url=$_GET['url'];
    $filesize=filesize($url.$name);

    header("Content-type: application/octet-stream ; charset=utf-8"); //输出类型 
    header("Content-Disposition:filename=".$name);
    header("Accept-Ranges: bytes"); //文件单位
    header("Accept-Length:".$filesize); //文件大小
    header("Content-Disposition: attachment; filename=".$name);//下载时显示的名字

 
    $f=fopen($url.$name, "r");
    $buffer=1024;
    $downsize=0;
    $str="";
    while(!feof($f) && ($filesize-$downsize)>0){
        $downsize+=$buffer;
        echo fread($f,$buffer);
 
    }
    //echo $str;
    fclose($f);
 
}
ccclDevil 2015-01-06
  • 打赏
  • 举报
回复
没人吗????求解啊!!!!
ccclDevil 2015-01-06
  • 打赏
  • 举报
回复

图是不是发不了啊

21,886

社区成员

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

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