thinkphp 内置文件下载 提示(Class 'finfo' not found) 解决办法。

/* //考卷下载
public function download(){
// 接收参数
$paper_id = $_GET['paper_id'];
if ($paper_id ){
$files = M('file');
$file = $files->field('file_url')->where("relation_id=".$paper_id)->find();
// 参数处理
$filename =$_SERVER['DOCUMENT_ROOT']. __ROOT__."/".$file["file_url"];
$show = $file["file_name"];
$showname = iconv("UTF-8", "GBK", $show);
// 调用下载类

$http = new \Org\Net\Http();
$http->download($filename,$showname);
}else{
$this->redirect('U("index")');
}
}*/

使用thinkphp 自带的 http() 可能会报出

 

 

所以改用一下方法:

①控制器的内容
public function download(){
// 接收参数
$paper_id = $_GET['paper_id'];
if ($paper_id ){
$files = M('file');
$map['relation_id']=$paper_id;
$map['file_type']=2;
$file = $files->field('file_url')->where($map)->find();
$file_url = $_SERVER['DOCUMENT_ROOT']. __ROOT__."/".$file["file_url"];

//调用下载类
$paper = D('Common/Paper');
$paper ->downloads($file_url);

}
}

②模型内容:

//下载非http()方法 $file 为传入的文件的绝对路径
public function downloads($file){
$file_dir = $file;
$filename=pathinfo($file);

if (!file_exists($file_dir)){
header("Content-type: text/html; charset=utf-8");
echo "文件不存在!";
exit;
} else {
$file = fopen($file_dir,"r");
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".filesize($file_dir));
header("Content-Disposition: attachment; filename=".$filename['basename']);
echo fread($file, filesize($file_dir));
fclose($file);
}
}

转载于:https://www.cnblogs.com/wongjull/p/6133923.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值