php如何进行文件下载?

header()函数的作用是向浏览器发送正确的HTTP报头,报头指定了网页内容的类型,页面的属性等信息。

1)页面跳转。如果header()函数的参数为“Location:xxx”,那么页面就会自动跳转到“xxx”指向的URL地址。

2)指定网页内容。例如,同样的一个XML格式的文件,如果header()函数的参数指定为“Content-type:application/xml”,那么浏览器就会将其按照XML文件格式来解析。但如果是“Content-type:text/xml”,那么浏览器将会将其看做文本解析。

3)文件下载。header()函数结合readfile()函数可以下载将要浏览的文件,例如,下载html目录下的1.txt文件可以使用以下的代码:

<?php
    $textname="html/1.txt";                                     //源文件
    $newname="index.txt";                                       //新文件名  
    header("Content-type:text/plain");                          //设置下载的文件类型
    header("Content-Length:".filesize($textname));              //设置下载文件的大小
    header("Content-Disposition:attachment;filename=$newname"); //设置下载文件的文件名
    readfile($textname);                                        //读取文件

 

拓展:

app的下载代码实现

<meta charset="utf8">
<?php
    $textname="./mafengwo_ziyouxing.apk";                                      //源文件
    $newname="智尚荟";                                               //新文件名  
    header("Content-type:application/vnd.android.package-archive");                          //设置下载的文件类型为apk
    header("Content-Length:".filesize($textname));              //设置下载文件的大小
    header("Content-Disposition:attachment;filename=$newname"); //设置下载文件的文件名
    readfile($textname);                                        //读取文件

下载APP:

    TP方式实现下载
    public function down()
    {
      $info=Db::name('config_appset')
          ->order('id','desc')
          ->select();
      $textname=$_SERVER['DOCUMENT_ROOT'].$info[3]['url'];                        
      $newname="智尚荟-".$info[3]['version'];                                                
      header("Content-type:application/vnd.android.package-archive");                          
      header("Content-Length:".filesize($textname));              
      header("Content-Disposition:attachment;filename=$newname"); 
      readfile($textname);                                        
      exit;
    }

下载PDF:

 

    //TP方式实现下载
    public function down()
    {
        $id=$request->param('id');
        $url=Db::name('business')->where('id',$id)->value('pdf');
        $filename=ROOT_PATH.'public'.DS.'uploads'.DS.$url;      
        // header("Location:$textname");
        header('Content-Type: application-x/force-download');
        // header('Content-Disposition: attachment; filename="' . basename($filename) .'"');
        header('Content-Disposition: attachment; filename=自画像报告.pdf'); //文件名称记得带文件后缀
        header('Content-length: ' . filesize($filename));
        // for IE6
        if (false === strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) {
                header('Cache-Control: no-cache, must-revalidate');
        }
        header('Pragma: no-cache');
        // read file content and output
        return readfile($filename);;
    }

关于Content-type:参数的参考资料

https://tool.oschina.net/commons

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值