博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
exforce_download() -- 对CI中force_download()增强后的函数(不依赖CI)
阅读量:6681 次
发布时间:2019-06-25

本文共 2624 字,大约阅读时间需要 8 分钟。

/**  * Enhanced force_download, can accept file in server  * @author Wilson Zeng  * @param $filename | The name that will use as the download file's name by default  * @param $data | Can be: [1]. a file real path; [2]. an string that contain the file's content  * @param $is_file | To specify the type of the $data  * @return Byte Stream */ function exforce_download($filename = '', $data = '', $is_file = FALSE) {
if ($filename == '' OR $data == '') {
return FALSE; } if($is_file && !is_file($data)){
return FALSE; } // Try to determine if the filename includes a file extension. // We need it in order to set the MIME type if (FALSE === strpos($filename, '.')) {
return FALSE; } // Grab the file extension $x = explode('.', $filename); $extension = end($x); // Load the mime types /*zcs=Reduce Dependence if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes'.EXT)) {
include(APPPATH.'config/'.ENVIRONMENT.'/mimes'.EXT); } elseif (is_file(APPPATH.'config/mimes'.EXT)) {
include(APPPATH.'config/mimes'.EXT); } */ $mimes = array(); //zcs=[NOTE] Here we just assign an empty array to reduce the dependence of the CI framework // Set a default mime if we can't find it if ( ! isset($mimes[$extension])) {
$mime = 'application/octet-stream'; } else {
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension]; } $size = 0; if($is_file){
$size = filesize($data); }else{
$size = strlen($data); } // Generate the server headers if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE) {
header('Content-Type: "'.$mime.'"'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".$size); } else {
header('Content-Type: "'.$mime.'"'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".$size); } if($is_file){
$h_file = fopen($data, 'r'); while(!feof($h_file)){
echo fread($h_file, 1048576);//1M } fclose($h_file); }else{
exit($data); } }

转载于:https://www.cnblogs.com/ppoo24/archive/2012/01/17/2324537.html

你可能感兴趣的文章
intellij 修改jsp 或者 html 自动加载页面变化
查看>>
MongoDB 常用命令
查看>>
B/S结构 进销存 客户管理 人资管理系统
查看>>
iOS 学习资料整理 {非常有用,强烈推荐}
查看>>
Linux上安装使用boost入门指导
查看>>
Tomcat去除项目名
查看>>
spring boot Controller不起作用的解决方案
查看>>
分布式ID生成算法总结
查看>>
目录管理和文件管理
查看>>
广播事件的两种类型。
查看>>
cmd进入控制Mysql&出现乱码的问题
查看>>
POJ 2407 Relatives 题解《挑战程序设计竞赛》
查看>>
关于那些最好玩的户外APP合集下(适合资深驴友、牛逼设计狮、装逼攻城狮)...
查看>>
syslog本地和远程日志分离
查看>>
ISCSI共享存储配置跟parted命令简述
查看>>
SysUtils.WrapText - 换行
查看>>
静态路由与浮动路由的配置
查看>>
实现一个日期类
查看>>
安装Oracle 11g R2 单实例数据库(非asm)
查看>>
linux-wget命令笔记
查看>>