WordPress网站中,无法直接通过header( )函数实现下载功能。如果直接调用header( )函数,会报
Warning: Cannot modify header information – headers already sent by (output started at /……) in /…… on line ……错误。这篇文章就来介绍WordPress网站用header( )实现文件下载的方法。
1.案例目标
本案例的目标分成两步
第一步:运行1个外部程序,下载文件到服务器
第二步:从服务器上,下载文件到本地
2.方法步骤
第一步:运行1个外部程序,下载文件到服务器
在根目录(/www/wwwroot/网站域名/)下建立一个文件夹 /onlyget
然后,见文章WordPress网站中用短代码运行PHP脚本的方法
第二步:在第一步的基础上,仍是通过短代码运行PHP脚本文件的方式实现
在根目录(/www/wwwroot/网站域名/)下建立文件,名为dl.php,代码如下
<?php
if (isset($_GET[“action”] )) { //单击“下载”按钮
$file_name=urldecode(trim($_GET[‘fname’])); //获取要下载的文件名,这里是基本名basename
$url_array = glob(“onlyget/$file_name.*”);//用glob()获取全名,包含在数组里
$fileurl = $url_array[0]; //获取文件路径
$dl_filename = substr($fileurl,8);//用于指定下载时文件名称
if (!file_exists($fileurl)) { //检查文件是否存在
echo “File not found.”; //输出错误提示 “文件找不到”
exit(); //退出
}else{
$file=fopen($fileurl, “r”); //打开文件
ob_clean();
header(“Content-type:application/octet-stream”); //输入文件类型
header(“Accept-Ranges:bytes”);
header(“Accept-Length:”.filesize($fileurl)); //输入文件大小
header(“Content-Disposition:attachment;filename=”.($dl_filename)); //输入文件名称
echo fread($file, filesize($fileurl)); //开始下载
fclose($file); //关闭文件
exit;
}
}
?>
3.实现
在文章WordPress网站中用短代码运行PHP脚本的方法里,url-form.php文件中的代码
<a href=”dl.php?action=download&fname=<?php echo $utime?>” style=”color:#ffffff”> <button>Download</button> </a>
Download按钮就是调用dl.php文件,实现下载功能啦。效果如下图
