php如何实现文件下载
我用的tp5框架,参考网址如下
第一种方式
https://blog.****.net/qq_39376608/article/details/80632772
第二种方式
https://blog.****.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();
}
}
最终效果图