| 查看: 396 | 回复: 3 | |||
| 当前主题已经存档。 | |||
[交流]
PHP怎么实现文件下载?
|
|||
|
比如我给别人下载一个txt文件。 点一下按钮,就弹出下载框下载,而不是直接显示内容。。。怎么实现? 就像小木虫下载代理的那些txt文件 |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有6人回复
存款400万可以在学校里躺平吗
已经有14人回复
Materials Today Chemistry审稿周期
已经有6人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
推荐一本书
已经有13人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
cad_0
木虫 (著名写手)
玛雅城的小石头
- 博学EPI: 1
- 应助: 0 (幼儿园)
- 贵宾: 0.25
- 金币: 3752.5
- 红花: 3
- 帖子: 1757
- 在线: 23.4小时
- 虫号: 274507
- 注册: 2006-08-26
- 专业: 有机化工
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
pigliu(金币+5):谢谢
pigliu(金币+15):知道答案了,分都给你了,呵呵
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
3楼2006-09-23 20:09:42
|
回楼上~~根本无此必要~~防止人家知道下载地址普通的弹出窗口就已经可以防范普通用户,不普通的用户你只要允许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











回复此楼
;