php下载文件 前端直接访问这个url 就行了

// 下载文件
public function downFile(){
    $file_id = $this->request->get('file_id/d');
    if (!$file_id){
        $this->error('参数错误');
    }
    //获取文件信息
    $fileInfo = Db::table('file')->find($file_id);

    if (!$fileInfo || !$fileInfo['file_url']){
       $this->error('文件不存在或无下载链接');
    }


    $url = $fileInfo['file_url'];
    $info = get_headers($url, true);
    $size = $info['Content-Length'];
    header("Content-type:application/octet-stream");
   //去掉`?`后面的查询参数
   /*$filename = $url;
    if (false !== stripos($url, '?')) {
        $filename = substr($url, 0, stripos($url, '?'));
    }*/

    //获取文件的后缀
    $suffix = substr($fileInfo['file_url'],strripos($fileInfo['file_url'],'.')); // 获取文件后缀
    $origin_name = $fileInfo['name'].$suffix;
    header("Content-Disposition:attachment;filename = " .$origin_name);
    header("Accept-ranges:bytes");
    header("Accept-length:" . $size);
   $res =  readfile($url);
  
    exit;
}

你可能感兴趣的:(php下载文件 前端直接访问这个url 就行了)