首页> 实战笔录 >PHP开发笔记 >ThinkPHP ThinkPHP
tp5实现文件下载,并对下载的文件重命名
作者:小萝卜 2019-07-24 【 PHP TP5 】 浏览 4719
简介tp5实现文件下载,并对下载的文件重命名,通过php的header函数来实现此项操作
tp5实现文件下载,并对下载的文件重命名
$id = request()->param('id');
$data = db('article')->where('id=:id',['id'=>$id])->field('title,down')->find();
$ext = strrchr($data['down'],'.'); //获取文件后缀名
$data['down'] = str_replace('/',DS,$data['down']);
$files = ROOT_PATH.$data['down'];
if(!file_exists($files)){
echo '未找到文件';
exit;
}else{
$file1 = fopen($files,'r');
//告诉浏览器这是一个文件流格式的文件
Header ( "Content-type: application/octet-stream" );
//请求范围的度量单位
Header ( "Accept-Ranges: bytes" );
//Content-Length是指定包含于请求或响应中数据的字节长度
Header ( "Accept-Length: " . filesize ( $files ) );
//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
Header ( "Content-Disposition: attachment; filename=" . $data['title'].$ext );
ob_clean(); //清除缓存
flush(); // 可清除文件多余的路径名称 解决乱码的问题
echo fread($file1,filesize($files)); //读取文件内容并输出到浏览器
fclose();
exit;
}
很赞哦! (0)
相关文章
- tp5动态创建mysql数据表
- TP6/ThinkPHP6 多应用模式域名串模块的问题
- TP6/ThinkPHP6怎么获取表前缀
- TP6阿里云OSS上传报SSL certificate problem:unable to get local issuer certificate
- tp6多应用模式下渲染视图报错D:\PhpstormProjects\tp6\app\admin\view\.html
- TP5/6验证器验证身份号(使用自定义验证规则)
- TP框架右下角运行时间
- TP6获取上传文件的后缀名
- tp5 报错variable type error: array怎么解决
- TP6/ThinPHP6 获取主键自增ID