php如何实现文件下载

我用的tp5框架,参考网址如下

第一种方式
https://blog.csdn.net/qq_39376608/article/details/80632772

第二种方式
https://blog.csdn.net/chengxiadenghuo/article/details/79969220

html 页面中按钮

<td><a href="home_xiazai222">下载</a></td>,携带 url 返回控制器即可

第一种,控制器

// 使用的时候,从前台传过来文件地址即可,接收方法添加参数 $file_url
function download($new_name=''){

    $file_url = 'E:\phpstudy2018\PHPTutorial\WWW\thinkphp51130\public\uploads\music/1547515887.mp3';
    $file_name=basename($file_url);
    $file_type=explode('.',$file_url);
    $file_type=$file_type[count($file_type)-1];
    $file_name=trim($new_name=='')?$file_name:urlencode($new_name);
    $file_type=fopen($file_url,'r'); //打开文件
    //输入文件标签
    header("Content-type: application/octet-stream");
    header("Accept-Ranges: bytes");
    header("Accept-Length: ".filesize($file_url));
    header("Content-Disposition: attachment; filename=".$file_name);
    //输出文件内容
    echo fread($file_type,filesize($file_url));
    fclose($file_type);
}

第2种

function download222(){
    // if(!isset($file_url)||trim($file_url)==''){
    //   echo '500';
    // }
   
    $file_url = 'uploads/music/1547515887.mp3';
    $file_name=basename($file_url);
    // 下载文件存放目录,这是完整路径,电脑上的本地路径
    $file_dir = ROOT_PATH.'public'.DS.'uploads'.DS.'music'.'/';  
   
    echo $file_dir.$file_name;

    // die;
    if(!file_exists($file_dir.$file_name)){    //检查文件是否存在
    	  echo '<hr>';
          echo '404,文件找不到';
          exit();

    }else{
    	//echo '<hr>';
    	//echo '找到路径';
    	$file1=fopen($file_dir.$file_name,'r'); //打开文件
        //输入文件标签
        header("Content-type: application/octet-stream");
        header("Accept-Ranges: bytes");
        header("Accept-Length: ".filesize($file_dir.$file_name));
        header("Content-Disposition: attachment; filename=".$file_name);
        ob_clean();
        flush();
        //输出文件内容
        echo fread($file1,filesize($file_dir.$file_name));
        fclose($file1);
        exit();
    }
}

最终效果图

=谷歌浏览器中
火狐浏览器中

猜你喜欢

转载自blog.csdn.net/qq_39835505/article/details/86488471