WordPress网站用header( )实现文件下载的方法

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文件,实现下载功能啦。效果如下图

发表评论

邮箱地址不会被公开。