php下载文件适配浏览器

 $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'];

 //获取文件的后缀
 $suffix = substr($fileInfo['file_url'],strripos($fileInfo['file_url'],'.')); // 获取文件后缀
 $ua = $_SERVER ['HTTP_USER_AGENT'];

 $filename = $fileInfo['name'].$suffix;
 //$encoded_filename = urlencode ( $filename );
 // 防止中文乱码
 header("Content-type:application/octet-stream");
 // 针对ie浏览器
 if (preg_match ( "/Triden/", $ua )) {
    $filename  = iconv("utf-8","gb2312",$filename);
     header ( "Content-Disposition: attachment; filename=".$filename);
//针对火狐浏览器
 }else if (preg_match ( "/Firefox/", $ua )){
     header ( "Content-Disposition: attachment; filename*=\"utf8''" . $filename . '"' );
 }else{
     header ( "Content-Disposition: attachment; filename=".$filename);
 }

 header("Accept-ranges:bytes");
 header("Accept-length:" . $size);
$res =  readfile($url);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值