PHP通过header实现文本文件下载的代码


Posted in PHP onAugust 08, 2010

这就是今天讨论的主要问题。PHP帮助文档里面关于PHP通过header触发下载的说明比较简单,而网上关于此方面的文章也少的可怜,有很多文章都无法实现所需要的效果。今天我也来谈一下这个方面的话题,如果你感觉比网上的某些文章有所改进,那我就很知足了。

如果从准确的角度来说,那PHP文档是最准确的,因为它很简练的列出了实现文本类文件触发下载所需要的三条语句,以PDF为例就是:

// We'll be outputting a PDF 
header('Content-type: application/pdf'); 
// It will be called downloaded.pdf 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
// The PDF source is in original.pdf 
readfile('original.pdf');

这三句是正确的,但是在真正用的过程中很容易出现一些无法预料的问题,如果你是一个很仔细的人的话,也可以很容易的避免这些问题。而我不是,所以我就遇到了这样的问题,这里就以我的问题来简单说一下。

对于第一句,应该没啥说的,是必须的,只要改一下文档的类型就行,例如是下载txt文件,那就改为header(‘Content-type: application/txt');,第二句也没啥说的,就是为你的下载文档起一个名字,如果是txt文件的话,可以改为header(‘Content-Disposition: attachment; filename=”downloaded.txt”‘);,第三句的问题就比较多了,readfile这个函数的意思就是读取一个文件然后输出,这里文件的路径需要是真实的文件路径,如果是downloads文件夹下面的一个original.txt文件,可以这样写readfile(‘downloads/original.txt');,而如果提交的页面会输出文本等字符,那么下载到的文件会是原文件original.txt和提交的页面输出的文字的混合文件。我在这里就缺少了仔细的观察,一看下面不对就立即去查代码了,而没发现上面的文本就是我需要的内容,发现了这部分内容,你可能就很快想到怎么来解决这个问题了,也就是关闭提交到的页面的文本内容的输出。

到这里,我们的问题就解决了,从而也就实现了文本文件链接被点击的时候会触发下载对话框的效果。

PHP 相关文章推荐
使用PHP制作新闻系统的思路
Oct 09 PHP
Php注入点构造代码
Jun 14 PHP
提高PHP编程效率 引入缓存机制提升性能
Feb 15 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
php简单实现多语言切换的方法
May 09 PHP
实现PHP搜索加分页
Oct 12 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
php下保存远程图片到本地的办法
Aug 08 #PHP
用PHP实现递归循环每一个目录
Aug 08 #PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 #PHP
PHP下对数组进行排序的函数
Aug 08 #PHP
PHP 冒泡排序算法的实现代码
Aug 08 #PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 #PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 #PHP
You might like
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
python文件写入实例分析
2015/04/08 Python
Python中方法链的使用方法
2016/02/23 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Python os库常用操作代码汇总
2020/11/03 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
暑期实习鉴定
2013/12/16 职场文书
司机辞职报告范文
2014/01/20 职场文书
《长相思》听课反思
2014/04/10 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
社会实践活动总结范文
2014/07/03 职场文书
单位工作证明范文
2014/09/14 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
angular异步验证器防抖实例详解
2022/03/31 Javascript
Python开发五子棋小游戏
2022/04/28 Python