24小时热门版块排行榜    

查看: 411  |  回复: 3
当前主题已经存档。

pigliu

捐助贵宾 (正式写手)

[交流] PHP怎么实现文件下载?

比如我给别人下载一个txt文件。

点一下按钮,就弹出下载框下载,而不是直接显示内容。。。怎么实现?

就像小木虫下载代理的那些txt文件

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cad_0

木虫 (著名写手)

玛雅城的小石头

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
pigliu(金币+5):谢谢
pigliu(金币+15):知道答案了,分都给你了,呵呵
如果只是普通的文件下载,完全没有必要用到php,用个http://xx.xx.com/xx.tar@#>就可以,但是有的时候为让文件保密,只能给一部分人下载,显然不能够把链节告诉别人,如果是这样哪就起不到保密的效果。
下面这个函数就是一个用php写的文件下载的函数,它是把文件一段一段地读出来,再传送给客户端.

function download($file_dir,$file_name)
//参数说明:
//file_dir:文件所在目录
//file_name:文件名
{
    $file_dir = chop($file_dir);//去掉路径中多余的空格
    //得出要下载的文件的路径
    if($file_dir != @#@#)
    {
        $file_path = $file_dir;
        if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != @#/@#)
            $file_path .= @#/@#;
        $file_path .= $file_name;
    }            
    else
        $file_path = $file_name;   
   
    //判断要下载的文件是否存在
    if(!file_exists($file_path))
    {
        echo @#对不起,你要下载的文件不存在。@#;
        return false;
    }

    $file_size = filesize($file_path);

    header("Content-type: application/octet-stream";
    header("Accept-Ranges: bytes";
    header("Accept-Length: $file_size";
    header("Content-Disposition: attachment; filename=".$file_name);
   
    $fp = fopen($file_path,"r";
    $buffer_size = 1024;
    $cur_pos = 0;
   
    while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)
    {
        $buffer = fread($fp,$buffer_size);
        echo $buffer;
        $cur_pos += $buffer_size;
    }
   
    $buffer = fread($fp,$file_size-$cur_pos);
    echo $buffer;
    fclose($fp);
    return true;

}
2楼2006-09-23 18:07:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pigliu

捐助贵宾 (正式写手)

其实我意思是这样,点一个按钮,
php连接数据库,把资料写入一个txt文件,然后这个文件不直接在ie显示,而是打开下载框给别人下载
3楼2006-09-23 20:09:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bathy

新虫 (初入文坛)

回楼上~~根本无此必要~~防止人家知道下载地址普通的弹出窗口就已经可以防范普通用户,不普通的用户你只要允许IE下载就没有办法不让人家知道,IE的下载窗口句柄自己就可以给出原始下载地址
要想隐藏,目前唯一的办法就是动态地址技术,举个简单的例子
程序给出IE的地址是:"http://hahaha.com/2006-09-23-03:31-onlycopy/haha.exe"
下一分钟的下载地址:"http://hahaha.com/2006-09-23-03:32-onlycopy/haha.exe"
只有这个原理行得通,也就是必须要在服务器端取得权限,若连接别人的网站~~基本上LZ就死心吧~网上现成的软件都一大堆,更不要说安装过VC++带的debugger了~
4楼2006-09-24 03:40:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 pigliu 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 化工299分求调剂 一志愿985落榜 +4 嘻嘻(*^ω^*) 2026-03-01 4/200 2026-03-01 13:15 by wang_dand
[考研] 306分材料调剂 +3 chuanzhu川烛 2026-03-01 4/200 2026-03-01 12:32 by houyaoxu
[考研] 302材料工程求调剂 +4 Doleres 2026-03-01 5/250 2026-03-01 11:52 by liqiongjy
[考研] 272求调剂 +5 材紫有化 2026-02-28 5/250 2026-03-01 11:51 by gaoxiaoniuma
[考研] 材料学调剂 +7 提神豆沙包 2026-02-28 9/450 2026-03-01 11:50 by 王伟要上岸啊
[考研] 321求调剂一志愿东北林业大学材料与化工英二数二 +3 虫虫虫虫虫7 2026-03-01 6/300 2026-03-01 11:50 by gaoxiaoniuma
[考研] 求调剂 +5 repeatt?t 2026-02-28 5/250 2026-03-01 11:43 by 王伟要上岸啊
[硕博家园] 2025届双非化工硕士毕业,申博 +3 更多的是 2026-02-27 4/200 2026-03-01 10:04 by ztg729
[考研] 0856求调剂285 +6 吕仔龙 2026-02-28 6/300 2026-03-01 10:03 by wang_dand
[硕博家园] 博士自荐 +6 科研狗111 2026-02-26 10/500 2026-03-01 10:02 by 科研狗111
[论文投稿] 求助coordination chemistry reviews 的写作模板 10+3 ljplijiapeng 2026-02-27 4/200 2026-03-01 09:07 by babero
[考研] 284求调剂 +5 天下熯 2026-02-28 5/250 2026-03-01 08:49 by ms629
[考研] 272求调剂 +4 田智友 2026-02-28 4/200 2026-03-01 06:43 by 刘兵
[考研] 285求调剂 +6 满头大汗的学生 2026-02-28 6/300 2026-03-01 06:29 by Trying]
[基金申请] 面上模板改不了页边距吧? +5 ieewxg 2026-02-25 6/300 2026-03-01 00:10 by addressing
[考研] 295求调剂 +5 19171856320 2026-02-28 5/250 2026-02-28 21:39 by gaoxiaoniuma
[考博] 26申博 +4 想申博! 2026-02-26 4/200 2026-02-28 21:37 by limorning
[考研] 298求调剂 +8 人间唯你是清欢 2026-02-28 11/550 2026-02-28 20:26 by L135790
[考研] 0856材料求调剂 +10 hyf hyf hyf 2026-02-28 11/550 2026-02-28 18:50 by 无际的草原
[考研] 304求调剂 +5 曼殊2266 2026-02-28 6/300 2026-02-28 12:44 by 迷糊CCPs
信息提示
请填处理意见