帝国CMS下载txt文件浏览器带下载进度显示
时间:2024年03月08日
/来源:网络
/编辑:佚名
帝国默认TXT格式的文件是不可以下载,不修改源文件他会直接打开。
方法TXT弹出下载:
测试版本:帝国CMS7.0
功能位置:后台->其他管理->下载模型管理->管理地址前缀
相关函数:
e/class/DownSysFun.php DoTypeForDownurl() , QDownLoadFile() , DownSoft()
全选代码复制
功能解释:
HEADER:使用header转向,通常设为这个。
META:直接转自,如果是FTP地址推荐选择这个。
READ:使用PHP程序读取,防盗链较强,但较占资源,服务器本地小文件可选择。
帝国CMS弹出下载txt,xls等说明
1.看下面粘贴的帝国原函数DoTypeForDownurl() Header 与 Meta 两种方式都使用的真实地址,在这两种方式下浏览器不能读取的文件格式,
例如RAR,ZIP等将直接直接弹出一个真实地址下载,txt等浏览器可读的文件格式则直接在线浏览;
2.默认不选择前缀的情况下,使用是Header
3.READ 这种方式下是利用PHP读取文件,并传递给浏览器,无论 RAR 还是TXT都会弹出下载,而不是浏览器直接读取,
弹出的地址也是加密的地址类似:
xxx.com/enews=DownSoft& classid=39&id=11&pathid=0&pass=7b9516932a88d44b4e4610e209f6288d&p=22:::J2qCrBGqmrxK
4.READ的加密地址判断是否有下载权限,也就是地址是否正确是由e/class/DownSysFun.php中DownSoft()函数来判 断的,
经测试如果不更改后台->系统设置->模型设置->下载验证码 的情况下流传出去是可以持续被下载的(没有用户组,积分等判断限制
如果要避免那么e/class/DownSysFun.php 第一行 $DownSys_CheckIp=0; 中的0改为1),帝国CMS也是通过这个方式来防盗链
5.如果我不想使用下载地址前缀,而让TXT等格式可以弹出下载,那么你可以在e/class/DownSysFun.php中搜索
DoTypeForDownurl($downurl,$downurlr[‘downtype’]);
上一行加入如下代码:
//不使用下载地址前缀 让txt等浏览器可读类型文件弹出下载
$type2r=array(".xls",".txt",);
if(in_array(GetFiletype($downurl),$type2r)) {
$downurlr['downtype']=2;
}
全选代码复制
此方法可以下载TXT格式文件,但下载没有进度条显示
加入以下代码可实现TXT进度条下载:
//下载
$filesize = filesize($file);
Header('Pragma: public');
Header('Last-Modified:'.gmdate('D, d M Y H:i:s') . ' GMT');
Header('Cache-Control: no-store, no-cache, must-revalidate');
Header('Cache-Control: pre-check=0, post-check=0, max-age=0');
Header('Content-Transfer-Encoding: binary');
Header('Content-Encoding: none');
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=".$filename);
Header('Content-length: '.$filesize);
echo ReadFile($file);
全选代码复制
方法TXT弹出下载:
测试版本:帝国CMS7.0
功能位置:后台->其他管理->下载模型管理->管理地址前缀
相关函数:
e/class/DownSysFun.php DoTypeForDownurl() , QDownLoadFile() , DownSoft()
全选代码复制
功能解释:
HEADER:使用header转向,通常设为这个。
META:直接转自,如果是FTP地址推荐选择这个。
READ:使用PHP程序读取,防盗链较强,但较占资源,服务器本地小文件可选择。
帝国CMS弹出下载txt,xls等说明
1.看下面粘贴的帝国原函数DoTypeForDownurl() Header 与 Meta 两种方式都使用的真实地址,在这两种方式下浏览器不能读取的文件格式,
例如RAR,ZIP等将直接直接弹出一个真实地址下载,txt等浏览器可读的文件格式则直接在线浏览;
2.默认不选择前缀的情况下,使用是Header
3.READ 这种方式下是利用PHP读取文件,并传递给浏览器,无论 RAR 还是TXT都会弹出下载,而不是浏览器直接读取,
弹出的地址也是加密的地址类似:
xxx.com/enews=DownSoft& classid=39&id=11&pathid=0&pass=7b9516932a88d44b4e4610e209f6288d&p=22:::J2qCrBGqmrxK
4.READ的加密地址判断是否有下载权限,也就是地址是否正确是由e/class/DownSysFun.php中DownSoft()函数来判 断的,
经测试如果不更改后台->系统设置->模型设置->下载验证码 的情况下流传出去是可以持续被下载的(没有用户组,积分等判断限制
如果要避免那么e/class/DownSysFun.php 第一行 $DownSys_CheckIp=0; 中的0改为1),帝国CMS也是通过这个方式来防盗链
5.如果我不想使用下载地址前缀,而让TXT等格式可以弹出下载,那么你可以在e/class/DownSysFun.php中搜索
DoTypeForDownurl($downurl,$downurlr[‘downtype’]);
上一行加入如下代码:
//不使用下载地址前缀 让txt等浏览器可读类型文件弹出下载
$type2r=array(".xls",".txt",);
if(in_array(GetFiletype($downurl),$type2r)) {
$downurlr['downtype']=2;
}
全选代码复制
此方法可以下载TXT格式文件,但下载没有进度条显示
加入以下代码可实现TXT进度条下载:
//下载
$filesize = filesize($file);
Header('Pragma: public');
Header('Last-Modified:'.gmdate('D, d M Y H:i:s') . ' GMT');
Header('Cache-Control: no-store, no-cache, must-revalidate');
Header('Cache-Control: pre-check=0, post-check=0, max-age=0');
Header('Content-Transfer-Encoding: binary');
Header('Content-Encoding: none');
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=".$filename);
Header('Content-length: '.$filesize);
echo ReadFile($file);
全选代码复制
新闻资讯 更多
- 【帝国cms教程】帝国CMS模板变量$GLOBALS[navclassid]用法分析04-03
- 【帝国cms教程】鲜为人知帝国CMS内容页调用上一篇和下一篇的精华方法汇总04-03
- 【帝国cms教程】怎么快速找出帝国CMS数据库配置文件路径及迁移网站后修改技巧!04-03
- 【帝国cms教程】帝国CMS模板$GLOBALS[navclassid]用法详解04-03
- 【帝国cms教程】帝国cms 7.5版列表页分页样式修改笔记04-02
- 【帝国cms教程】解决帝国CMS搜索页面模板不支持灵动标签和万能标签的方法04-02
- 【帝国cms教程】帝国CMS只备份栏目和模板的方法04-02
- 【帝国cms教程】帝国CMS怎样删除清空数据库记录?04-02
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法