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 相关文章推荐
一个可以找出源代码中所有中文的工具
Oct 25 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
php创建多级目录代码
Jun 05 PHP
PHP Memcached应用实现代码
Feb 08 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
前端必学之PHP语法基础
Jan 01 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
php图片上传类 附调用方法
May 15 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
PHP文件操作实例总结
Sep 27 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 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
深入apache host的配置详解
2013/06/09 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
jQuery的css()方法用法实例
2014/12/24 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Django model select的多种用法详解
2019/07/16 Python
实例详解Python装饰器与闭包
2019/07/29 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
求职自荐书范文
2013/12/04 职场文书
高中生学习的自我评价
2013/12/14 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
初婚未育证明样本
2015/06/18 职场文书
2015年中秋寄语
2015/07/31 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
python实现批量移动文件
2021/04/05 Python
用Python提取PDF表格的方法
2021/04/11 Python
详解MySQL 联合查询优化机制
2021/05/10 MySQL
js实现模拟购物商城案例
2021/05/18 Javascript