www.legu.cc/application/Asset/Controller/DownloadController.class.php
2021-09-06 11:50:33 +08:00

44 lines
1.4 KiB
PHP

<?php
namespace Asset\Controller;
use Think\Controller;
class DownloadController extends Controller {
//文件下载
function index(){
header("Content-type:text/html;charset=utf-8");
$unique_id = trim($_GET['key']); //获取唯一码
$asset = M('Asset');
$line = $asset->where(array('unique'=>$unique_id))->find();
//print_r($line); die;
$rel_name = $line['filename'];
if(!$rel_name){
$this->error('未知错误!');
}
$file = $line['filepath'].$line['filename'];
//用以解决中文不能显示出来的问题
$file=iconv("utf-8","gb2312",$file);
//首先要判断给定的文件存在与否
if(!file_exists($file)){
$this->error("没有该文件文件");
}
$fp=fopen($file,"r");
$file_size=filesize($file);
//下载文件需要用到的头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".$rel_name);
$buffer=1024;
$file_count=0;
//向浏览器返回数据
while(!feof($fp) && $file_count<$file_size){
$file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
//写入数据库
$asset->where("_unique='$unique_id'")->setInc('download_times',1);
fclose($fp);
}
}