基于ThinkPHP3.2.3下载文件(几百M以上的)

控制器部分 
   function downfile($fileurl='http://www.fuhuaqi.com/Upload/activity/mongo.rar')
    {
//        下载本地方式一:会受到文件大小限制
//        ob_start();
//        $filename=$fileurl;
//        $date=date("Ymd-H:i:m");
//        header( "Content-type:  application/octet-stream ");
//        header( "Accept-Ranges:  bytes ");
//        header( "Content-Disposition:  attachment;  filename= {$date}.zip");
//        $size=@readfile($filename);
//        header( "Accept-Length: " .$size);

//        下载本地方式二:目前下载500M左右的都没问题,就是时间太慢
        set_time_limit(0);
        ini_set('memory_limit', '512M');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($fileurl));
        header('Content-Transfer-Encoding: binary');
        ob_end_clean();
        $size = readfile($fileurl);
        header( "Accept-Length: " .$size);
    }

方法三:下载之后在指定的地方,但是没有返回,成功之后只是一个空页面,使用TP的HTTP类

//下载之后在指定的地方,但是没有返回,只是一个空页面
    public function downmy()
    {

        $tu = time() . 'mygoods' . ".zip";
        $Http = new Http();
        $Http->curlDownload("http://www.fuhuaqi.com/Upload/activity/111111.zip", "./Upload/activity/".$tu);
        $url = "http://www.fuhuaqi.com/Upload/activity/".$tu;
        return $url;
    }

视图部分

<td><a class="fa fa-chevron-circle-down" href="__ROOT__/Admin/Bpapply/downfile">下载</a></td>

效果

181456_1Lbd_2854024.png

修改之后:

function downfile($fileurl='http://www.fuhuaqi.com/Upload/activity/mongo.rar')
{

    ob_start();
    set_time_limit(0);
    ini_set('memory_limit', '512M');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($fileurl));
    header('Content-Transfer-Encoding: binary');
    ob_end_clean();
    $size = readfile($fileurl);
    header( "Accept-Length: " .$size);
}

修改1.0.1

function downfile()
{
    ob_start();
    $id = I('get.id');
    $bpapplys = D('Bpapply')->selectOne($id);
    //上线后需要修改路径为绝对路径,否则下载不全
    $fileurl="http://www.fuhuaqi.com/Upload/bpapply/".$bpapplys['bp_bpimg'];
    set_time_limit(0);
    ini_set('memory_limit', '512M');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($fileurl));
    header('Content-Transfer-Encoding: binary');
    ob_end_clean();
    $size = readfile($fileurl);
    header( "Accept-Length: " .$size);
}

转载于:https://my.oschina.net/botkenni/blog/825921

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值