GoogleMapPHP帮助文档|Javascript帮助文档|HTC帮助文档|CSS2.0帮助文档|XmlHttpRequest帮助文档Apache帮助文档|Prototype帮助文档|Flash帮助文档|Mysql帮助文档|SqlServer帮助文档

字体:  

PHP实现文件下载

cnnas 发表于: 2007-11-25 16:44 来源: 大风车文档库门户

有朋友问我如何php实现文件下载。 我想这个要视情况而定。
1:如果可以公开文件地址让用户下载,那么直接在你的页面上加上该文件的地址就可以了,例如:<a href="下载文件地址">下载文件</a>
或者:
“Redirect”的方法:
<? // 检查 FORM 是否全部填写完毕... if ($form_completed) { Header("Location: http://www.cnnas.com/download/filename.exe"); exit; } ?>
“ <a href="http://www.cnnas.com/users/download.php?id=124524">开始下载文件</a> ”

2:安全性较高的网站,
关于“网上购物”的电子商务网站,考虑安全问题,不想用户直接复制网址下载该文件建议:

CODE:

<? $file_name = "filename.exe"; $file_dir = "/public/www/download/";
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在 echo "文件找不到"; exit; }
else { $file = fopen($file_dir . $file_name,"r"); // 打开文件 // 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name); // 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file); exit;} ?>
如果文件路径是“http”或者“ftp” 网址的话,则源代码会有少许改变,程序如下:
<? $file_name = "filename.exe";
$file_dir = "http://www.cnnas.com/";
$file = @ fopen($file_dir . $file_name,"r");
if (!$file) { echo "文件找不到"; }
else { Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment;
filename=" . $file_name);
while (!feof ($file))
{ echo fread($file,50000); }
fclose ($file); } ?>
这样就可以用PHP直接输出文件了。